在 Java 中创建符合 PDF/3-A 标准的 PDF 并附加 ZUGFeRD 发票。

使用 Document 和 FileSpecification 在需要将发票 XML 打包到 PDF 中以用于 ZUGFeRD 风格工作流时的 API。

将 ZUGFeRD 发票 XML 附加到 PDF

  1. 打开源 PDF Document。
  2. 创建 FileSpecification 用于 XML 发票文件。
  3. 设置嵌入文件的元数据,包括 MIME 类型和 AFRelationship。
  4. 添加 FileSpecification 到文档嵌入文件集合。
  5. 将文档转换为 PdfFormat PDF_A_3A。
  6. 保存已更新的 PDF Document。
public static void attachInvoiceZugferdFormat(Path inputFile, Path invoiceFile, Path outputFile) {
        try (Document document = new Document(inputFile.toString())) {
            String description = "Invoice metadata conforming to ZUGFeRD standard";
            FileSpecification fileSpecification = new FileSpecification(invoiceFile.toString(), description);

            fileSpecification.setMIMEType("text/xml");
            fileSpecification.setAFRelationship(AFRelationship.Alternative);

            document.getEmbeddedFiles().add("factur", fileSpecification);

            String outputFileName = outputFile.toString();
            String logPath = outputFileName.replace(".pdf", "_log.xml");
            document.convert(logPath, PdfFormat.PDF_A_3A, ConvertErrorAction.Delete);
            document.save(outputFile.toString());
        }
        System.out.println("ZUGFeRD invoice attached to " + outputFile);
    }