Crear PDF compatible con PDF/3-A y adjuntando factura ZUGFeRD en Java

Utilice el Document y FileSpecification APIs cuando necesita empaquetar el XML de la factura dentro de un PDF para flujos de trabajo al estilo ZUGFeRD.

Adjuntar el XML de factura ZUGFeRD a un PDF

  1. Abra el PDF de origen Document.
  2. Cree el FileSpecification para el archivo de factura XML.
  3. Establezca los metadatos del archivo incrustado, incluido el tipo MIME y AFRelationship.
  4. Añada el FileSpecification a la colección de archivos incrustados del documento.
  5. Convierta el documento a PdfFormat PDF_A_3A.
  6. Guarde el PDF actualizado 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);
    }