Добавление пользовательских заметок или водяных знаков часто требует вставки текста в PDF в Java‑приложениях. Conholdate.Total for Java — мощный SDK, который позволяет разработчикам программно редактировать PDF‑файлы. Это руководство проведёт вас через предварительные требования, подробный разбор кода и полный пример, чтобы вы могли легко наложить пользовательский текст на существующие PDF.
Предварительные требования и настройка
Прежде чем начать, убедитесь, что у вас есть следующее:
- Java 8 или выше установлен.
- Maven для управления зависимостями.
- IDE, такая как IntelliJ IDEA или Eclipse.
- Действительная лицензия Conholdate.Total for Java для использования в продакшн (см. раздел о лицензировании ниже).
Добавьте репозиторий Maven Conholdate и зависимость SDK в ваш pom.xml:
<repositories>
<repository>
<id>conholdate-repo</id>
<name>Conholdate Maven Repository</name>
<url>https://repository.conholdate.com/repo/</url>
</repository>
</repositories>
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.9</version>
<type>pom</type>
</dependency>
Скачайте последние бинарные файлы SDK со страницы загрузки. После успешного завершения сборки Maven вы готовы приступить к программированию. В следующем разделе показано, как именно загрузить PDF и вставить текст.
Добавить текст в PDF на Java: пошаговое руководство
Ниже приведено краткое пошаговое руководство по каждому логическому шагу. Полный исходный код воспроизводится позже в разделе Полный пример кода.
Шаг 1: Откройте PDF и создайте TextBuilder
Сначала откройте исходный PDF с помощью класса Document, затем создайте TextBuilder, указывающий на страницу, к которой вы хотите добавить текст.
String dataDir = "path/to/your/document/directory/";
// Open document
Document doc = new Document(dataDir + "Conholdate.pdf");
TextBuilder builder = new TextBuilder(doc.getPages().get_Item(1));
Классы Document и TextBuilder задокументированы в справке API.
Шаг 2: Создание и настройка TextParagraph
Создайте TextParagraph и настройте его макет: отступ, применяемый к последующим строкам, прямоугольник, ограничивающий область текста на странице, и режим переноса слов.
// Create text paragraph
TextParagraph paragraph = new TextParagraph();
// Set subsequent lines indent
paragraph.setSubsequentLinesIndent(20);
// Specify the location to add TextParagraph
paragraph.setRectangle(new Rectangle(100, 300, 200, 700));
// Specify word wrapping mode
paragraph.getFormattingOptions().setWrapMode(TextFormattingOptions.WordWrapMode.ByWords);
Шаг 3: Создать TextFragment и настроить шрифт
Создайте TextFragment, содержащий текст, который вы хотите наложить, затем установите его шрифт и размер шрифта через getTextState().
// Create text fragment
TextFragment fragment1 = new TextFragment("the quick brown fox jumps over the lazy dog");
fragment1.getTextState().setFont(FontRepository.findFont("Times New Roman"));
fragment1.getTextState().setFontSize(12);
Шаг 4: Добавить фрагмент и абзац
Добавьте фрагмент текста как строку внутри абзаца, затем добавьте абзац на страницу через TextBuilder.
// Add fragment to paragraph
paragraph.appendLine(fragment1);
// Add paragraph
builder.appendParagraph(paragraph);
Шаг 5: Сохранить изменённый PDF
Наконец, сформируйте путь вывода и сохраните полученный документ.
dataDir = dataDir + "AddText_out.pdf";
// Save resulting PDF document.
doc.save(dataDir);
С помощью этих шагов вы завершили процесс вставки текста в PDF.
Полный пример кода: вставка текста в PDF на Java
Следующий пример демонстрирует весь процесс от загрузки исходного файла до сохранения обновлённого PDF.
Этот пример демонстрирует, как добавить текст в существующий PDF с использованием Conholdate.Total for Java.
import com.aspose.pdf.Document;
import com.aspose.pdf.TextBuilder;
import com.aspose.pdf.TextParagraph;
import com.aspose.pdf.Rectangle;
import com.aspose.pdf.TextFormattingOptions;
import com.aspose.pdf.TextFragment;
import com.aspose.pdf.FontRepository;
public class AddTextToPdf {
public static void main(String[] args) {
String dataDir = "path/to/your/document/directory/";
// Open document
Document doc = new Document(dataDir + "Conholdate.pdf");
TextBuilder builder = new TextBuilder(doc.getPages().get_Item(1));
// Create text paragraph
TextParagraph paragraph = new TextParagraph();
// Set subsequent lines indent
paragraph.setSubsequentLinesIndent(20);
// Specify the location to add TextParagraph
paragraph.setRectangle(new Rectangle(100, 300, 200, 700));
// Specify word wrapping mode
paragraph.getFormattingOptions().setWrapMode(TextFormattingOptions.WordWrapMode.ByWords);
// Create text fragment
TextFragment fragment1 = new TextFragment("the quick brown fox jumps over the lazy dog");
fragment1.getTextState().setFont(FontRepository.findFont("Times New Roman"));
fragment1.getTextState().setFontSize(12);
// Add fragment to paragraph
paragraph.appendLine(fragment1);
// Add paragraph
builder.appendParagraph(paragraph);
dataDir = dataDir + "AddText_out.pdf";
// Save resulting PDF document.
doc.save(dataDir);
}
}
Примечание: Этот пример кода демонстрирует базовую функциональность. Прежде чем использовать его в вашем проекте, убедитесь, что обновили
dataDir, чтобы он указывал на фактическую директорию документов (содержащуюConholdate.pdf), проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если возникнут проблемы, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.
Заключение
В этом руководстве мы показали, как добавить текст в PDF на Java, используя мощные возможности Conholdate.Total for Java. Следуя пошаговому описанию, вы сможете надёжно создавать текстовые абзацы с помощью TextBuilder и TextParagraph, управлять стилем шрифта через TextFragment и сохранять изменённый документ. SDK самостоятельно обрабатывает координаты страниц PDF и рендеринг текста, поэтому вы можете сосредоточиться на бизнес‑логике. Не забудьте получить правильную лицензию для использования в продакшене; временную лицензию можно получить на странице временной лицензии или изучить варианты ценообразования на странице цен. С этими инструментами добавление пользовательского текста в PDF становится простой частью вашего Java‑приложения.
FAQs
Как добавить текст в PDF на Java, не перезаписывая существующее содержимое?
Используйтеbuilder.appendParagraph(paragraph)как показано в примере;TextBuilderдобавляет новый абзац на целевую страницу, сохраняя любое существующее содержимое.Можно ли добавить пользовательский текст водяного знака в PDF на Java?
Да. Тот же подход работает и для водяных знаков — создайтеTextFragmentс нужным текстом водяного знака, настройте подходящий шрифт и размер (или прозрачность через состояние текста), и добавьте его черезTextParagraphна каждой странице.Что делать, если вставленный текст отображается некорректно для некоторых языков?
Выберите шрифт, поддерживающий необходимый набор символов, с помощьюFontRepository.findFont(). SDK учитывает настройки шрифта, применённые черезgetTextState(), а документация предоставляет рекомендации по работе с различными скриптами.Могу ли я пакетно обрабатывать несколько PDF, добавляя один и тот же текст?
Конечно. Оберните код в цикл, который проходит по списку путей к файлам, повторно используя одну и ту же логикуDocument/TextBuilderдля каждого файла.
