Добавление пользовательских заметок или водяных знаков часто требует вставки текста в 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 для каждого файла.

Читать дальше