Criar PDF/3-A compatível e anexar fatura ZUGFeRD em Java

Use as APIs Document e FileSpecification quando precisar empacotar XML de fatura dentro de um PDF para fluxos de trabalho em estilo ZUGFeRD.

Anexar XML da fatura ZUGFeRD a um PDF

  1. Abra o PDF de origem em um objeto Document.
  2. Crie o FileSpecification para o arquivo XML da fatura.
  3. Defina os metadados do arquivo incorporado, incluindo o tipo MIME e AFRelationship.
  4. Adicione o FileSpecification à coleção de arquivos incorporados do documento.
  5. Converta o documento para PdfFormat PDF_A_3A.
  6. Salve o PDF atualizado 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);
    }