在 Java 应用程序中添加自定义注释或水印通常需要向 PDF 添加文本。Conholdate.Total for Java 是一个强大的 SDK,能够让开发者以编程方式编辑 PDF 文件。本指南将带您了解前置条件、详细的代码演练以及完整示例,帮助您轻松在现有 PDF 上叠加自定义文本。

先决条件和设置

在开始之前,请确保您具备以下条件:

  • 已安装 Java 8 或更高版本。
  • 用于依赖管理的 Maven。
  • 如 IntelliJ IDEA 或 Eclipse 等 IDE。
  • 用于生产使用的有效 Conholdate.Total for Java 许可证(详见后面的许可章节)。

将 Conholdate Maven 仓库和 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>

download page下载最新的 SDK 二进制文件。Maven 构建成功后,您即可开始编码。下一节将准确展示如何加载 PDF 并插入文本。

在 Java 中向 PDF 添加文本:分步演练

以下是每个逻辑步骤的简要演练。完整的源代码稍后在 完整代码示例 部分重新呈现。

步骤 1:打开 PDF 并创建 TextBuilder

首先,使用 Document 类打开源 PDF,然后创建一个指向要添加文本的页面的 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));

DocumentTextBuilder 类的文档位于 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 文本插入工作流。

完整代码示例:在 Java 中向 PDF 插入文本

以下示例演示了从加载源文件到保存更新后的 PDF 的完整过程。

此示例演示如何使用 Conholdate.Total for Java 向现有 PDF 添加文本。

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),确认已正确安装所有必需的依赖项,并在开发环境中彻底测试。如果遇到任何问题,请参考官方文档或联系支持团队获取帮助。

结论

在本教程中,我们展示了如何使用 Conholdate.Total for Java 的强大功能在 Java 中向 PDF 添加文本。通过遵循一步一步的演练,您可以可靠地使用 TextBuilderTextParagraph 构建文本段落,通过 TextFragment 控制字体样式,并保存修改后的文档。SDK 在内部处理 PDF 页面坐标和文本渲染,让您专注于业务逻辑。请记得为生产环境获取合适的许可证;您可以从 temporary license page 获取临时许可证,或在 pricing page 上查看定价选项。拥有这些工具后,在 Java 应用程序中为 PDF 添加自定义文本将变得非常简单。

常见问题

  • 如何在 Java 中向 PDF 添加文本而不覆盖现有内容?
    使用 builder.appendParagraph(paragraph) 如示例所示;TextBuilder 将新段落追加到目标页面,保留任何现有内容。

  • 是否可以在 Java 中向 PDF 添加自定义水印文本?
    是的。相同的方法也适用于水印——创建一个包含所需水印文本的 TextFragment,配置合适的字体和大小(或通过文本状态设置透明度),并在每页通过 TextParagraph 将其追加。

  • 如果插入的文本在某些语言中显示不正确,我该怎么办?
    使用 FontRepository.findFont() 选择支持所需字符集的字体。SDK 会遵循通过 getTextState() 应用的字体设置,且文档 提供了处理不同脚本的指南。

  • 我可以批量处理多个 PDF 并添加相同的文本吗?
    当然可以。将代码放在循环中,遍历文件路径列表,对每个文件重复使用相同的 Document/TextBuilder 逻辑。

阅读更多