使用案例
本指南演示了 Aspose.PDF FOSS 用于 Java 的真实场景,包括批量文档生成、文件合并、安全分发、表单数据收集以及 PDF/A 存档。Aspose.PDF FOSS 用于 Java 可生成 PDF 输出(仅导出)。
批量 PDF 生成
在循环中根据数据生成多个 PDF 文档,为每条记录添加一页并将其保存为单独的文件。此模式适用于发票生成、证书打印和对账单制作:
List<ReportData> records = fetchReports();
for (ReportData data : records) {
try (Document doc = new Document()) {
PageCollection pages = doc.getPages();
Page page = pages.add();
doc.save("reports/" + data.getId() + ".pdf");
}
}PDF 合并流水线
使用 PdfFileEditor.concatenate() 将每月报告 PDF 合并为一个年度文档。传入输入文件路径数组和输出路径:
String[] monthly = {
"jan.pdf", "feb.pdf", "mar.pdf", "apr.pdf",
"may.pdf", "jun.pdf", "jul.pdf", "aug.pdf",
"sep.pdf", "oct.pdf", "nov.pdf", "dec.pdf"
};
PdfFileEditor editor = new PdfFileEditor();
editor.concatenate(monthly, "year-end.pdf");使用 setUseDiskBuffer(true) 启用磁盘缓冲,以处理大型文件集合:
editor.setUseDiskBuffer(true);安全文档分发
在分发之前使用用户密码和所有者密码对文档进行加密。打开文件需要用户密码;所有者密码控制诸如打印等权限:
try (PdfFileSecurity security = new PdfFileSecurity()) {
security.setInputFile("report.pdf");
security.setOutputFile("report-secured.pdf");
security.encryptFile("userPass", "ownerPass",
DocumentPrivilege.getForbidAll(), KeySize.x128);
}表单数据收集
读取已填写 PDF 中提交的表单字段值。遍历表单字段并打印每个字段的完整名称及当前值:
try (Document doc = new Document("submitted-form.pdf")) {
Form form = doc.getForm();
for (WidgetAnnotation field : form.getFields()) {
System.out.println(field.getFullName() + " = " + field.getValue());
}
}这对于在无需单独表单提交服务器的情况下处理已填写的申请表非常有用。
PDF/A 长期归档
将标准文档转换为 PDF/A-1b,以用于监管或法律归档。Document.convert() 应用 PDF/A 验证规则并生成合规性报告。结果是一个符合 ISO 19005 要求的自包含 PDF/A 文件:
try (Document doc = new Document("input.pdf")) {
doc.convert("pdfalog.xml", PdfFormat.PDF_A_1B, ConvertErrorAction.Delete);
doc.save("archived.pdf");
}