1. 产品
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for Java

Aspose.PDF FOSS 用于 Java

从 Java 创建和操作 PDF 文档 — 包含注释、表单字段、页面操作和 PDF/A 合规。MIT 许可证。

免费 MIT 许可证的 Java 库,用于 PDF 创建和操作

Aspose.PDF FOSS for Java 是一个 MIT 许可证的 Java 库,用于创建和处理 PDF 文档。它提供了一个全面的 Document 类作为中心入口点,并全面覆盖注释、交互式表单字段、页面操作、元数据以及 PDF/A 合规性验证。

该库公开了527个类,覆盖完整的PDF规范:通过 DocumentPagePageCollection 实现文档结构;通过 Annotation 层次结构(包括 WidgetAnnotationFreeTextAnnotationHighlightAnnotation)实现注释;使用 FormButtonFieldCheckboxFieldRadioButtonField 实现交互式表单;通过 BmpDevice 进行页面渲染;以及通过 ActionRulesActionFixes 检查 PDF/A 合规性。加密通过 AESCipher 的 CBC 模式提供。

将 Aspose.PDF FOSS 添加到您的 Maven 项目中,使用 groupId org.aspose 和 artifactId aspose-pdf。该库需要 Java 11 或更高版本,并且完全采用 MIT 许可证。有关企业功能和支持,请参阅 Aspose.PDF for Java — Enterprise Product

文档结构与页面管理

  • Document API: 使用 Document 类来创建新的 PDF 文档。可以通过 Document(filePath)Document(stream) 构造函数访问现有文档。
  • 页面管理: 通过 PageCollection 添加、访问和修改页面。每个 Page 暴露 MediaBoxCropBox、旋转、资源和内容操作符。
  • Metadata: 通过 DocumentInfoXmpMetadata 读取和写入文档元数据。
  • PDF 结构: 通过 getParser()getCatalog()getTrailer() 访问底层 PDF 对象。
  • 嵌入式文件: 使用 getEmbeddedFiles() 管理嵌入式文件集合。

常见文档处理场景

  • PDF 生成: 通过创建 Document 并填充页面,以编程方式构建文档。
  • 文档分析: 访问现有文件以进行元数据检查或表单字段枚举。
  • 页面操作: 使用 PdfFileEditorPage API 调整大小、旋转或重新排序页面。
  • 批处理工作流: 在服务器端管道中对多个文档应用一致的转换。

注释与表单字段

  • 注释层次结构: 抽象的 Annotation 类是所有注释的基类;具体类型包括 WidgetAnnotationFreeTextAnnotationHighlightAnnotationUnderlineAnnotation
  • 交互式表单: 通过 Document.getForm() 访问文档表单,以枚举或创建 ButtonFieldCheckboxFieldRadioButtonField 实例。
  • 小部件外观: 通过 AppearanceCharacteristics 控制视觉属性 — 边框颜色、背景、旋转和标题。
  • 表单编辑: 使用 FormEditorFormElement 进行更高级的表单操作。

文档审阅与协作

  • Markup annotations: 添加高亮、下划线或自由文本批注到文档,以用于审阅工作流。
  • 交互式表单: 构建可填写的文档,使用单选按钮、复选框和推送按钮进行数据捕获。
  • 表单数据提取: 读取提交的表单字段值以用于服务器端管道。
  • 档案合规性: 使用 ActionRulesActionFixes 验证并修复文档,以实现长期归档。

安全与内容运营

  • AES 加密: 使用 CBC 模式(AESCipher.encrypt(key, data)AESCipher.decrypt(key, data))使用 AESCipher 加密和解密数据字节数组。
  • 制品管理: 通过 ArtifactArtifactCollection API 识别并操作页眉、页脚、水印和背景图像。
  • 内容调整: 使用 PdfFileEditor.resizeContents()ContentsResizeParameters 调整页面内容布局。
  • 合规验证: 使用 AnnotationRulesActionRules 对注释和操作规则进行 PDF/A 标准验证。

文档安全用例

  • Encrypted payloads: 使用 AESCipher 加密嵌入文档流中的数据段。
  • 文档保护: 在合规工作流中应用安全设置以进行访问控制。
  • 水印: 检测并管理 Artifact 对象,这些对象表示水印和页面装饰。
  • 归档合规性: 运行 ActionFixesAnnotationFixes 以使现有文档符合 PDF/A-1b 归档标准。

创建带有小部件注释的文档

创建一个新文档,添加页面,并附加带样式的 widget annotation。

try (Document doc = new Document()) {
    Page page = doc.getPages().add();
    WidgetAnnotation w = new WidgetAnnotation(page, new Rectangle(0, 0, 100, 50));
    w.getCharacteristics().setBorder(Color.fromRgb(1, 0, 0));
    w.getCharacteristics().setCaption("Submit");
    page.getAnnotations().add(w);
    doc.save("output.pdf");
}
```java
try (Document doc = new Document()) {
    Page page = doc.getPages().add();
    WidgetAnnotation w = new WidgetAnnotation(page, new Rectangle(0, 0, 100, 50));
    w.getCharacteristics().setBorder(Color.fromRgb(1, 0, 0));
    w.getCharacteristics().setCaption("Submit");
    page.getAnnotations().add(w);
    doc.save("output.pdf");
}

创建带有单选按钮的表单

向文档表单添加单选按钮组并以编程方式选择一个值。

try (Document doc = new Document()) {
    Page page = doc.getPages().add();
    RadioButtonField radio = new RadioButtonField(page);
    radio.setPartialName("choice");
    radio.addOption("Option1", new Rectangle(50, 50, 70, 70));
    radio.addOption("Option2", new Rectangle(50, 80, 70, 100));
    doc.getForm().add(radio, 1);
    radio.setValue("Option2");
    doc.save("form.pdf");
}

检查文档页面尺寸

访问现有文档并读取第一页的媒体框尺寸。

try (Document doc = new Document("input.pdf")) {
    double width = doc.getPages().get(1).getMediaBox().getWidth();
    double height = doc.getPages().get(1).getMediaBox().getHeight();
    System.out.println("Page size: " + width + " x " + height);
}
  

支持和学习资源

 中文