Criando PDF conforme PDF/3-A e anexando fatura ZUGFeRD em Java
Anexar ZUGFeRD ao PDF
Recomendamos as seguintes etapas para anexar ZUGFeRD ao PDF:
-
Defina uma variável de caminho que aponte para uma pasta onde os arquivos PDF de entrada e saída estão localizados.
-
Defina uma variável de string path que armazene o caminho para o arquivo PDF que será processado. Use o método
Paths.get
para combinar partes do caminho completo. -
Crie uma declaração try-with-resources que garanta que o objeto Document criado a partir da variável de caminho seja fechado automaticamente após o término da declaração. O objeto Document representa o documento PDF que será modificado e salvo.
-
Crie um objeto FileSpecification fornecendo o caminho e a descrição de outro arquivo, que contém metadados de fatura em conformidade com o padrão ZUGFeRD.
-
Adicione propriedades ao objeto de especificação do arquivo, como a descrição, tipo MIME e AFrelationship. O AFrelationship indica como o arquivo incorporado está relacionado ao documento PDF. Neste caso, está definido como “Alternative”, significando que o arquivo incorporado é uma representação alternativa do conteúdo do PDF.
-
Adicione o objeto de especificação do arquivo à coleção de arquivos incorporados do documento. O nome do arquivo deve ser especificado de acordo com o padrão ZUGFeRD, por exemplo, “factor-x.xml”.
-
Converta o documento para o formato PDF/A-3U, um subconjunto do PDF que garante a preservação a longo prazo de documentos eletrônicos. O PDF/A-3U permite a incorporação de arquivos de qualquer formato em documentos PDF.
-
Salve o documento convertido como um novo arquivo PDF (por exemplo, “ZUGFeRD-res.pdf”).
-
Feche a instrução try-with-resources e libere o objeto Document.
String _dataDir = "/home/aspose/pdf-examples/Samples/";
String path = Paths.get(_dataDir, "ZUGFeRD", "ZUGFeRD-test.pdf").toString();
try (Document document = new Document(path)) {
String description = "Metadados de fatura conforme o padrão ZUGFeRD";
path = Paths.get(_dataDir, "ZUGFeRD", "factur-x.xml").toString();
FileSpecification fileSpecification = new FileSpecification(path.toString(), description);
fileSpecification.setMIMEType("text/xml");
fileSpecification.setAFRelationship(com.aspose.pdf.AFRelationship.Alternative);
// Adicionar anexo à coleção de anexos do documento
document.getEmbeddedFiles().add(fileSpecification);
path = Paths.get(_dataDir, "ZUGFeRD", "log.xml").toString();
document.convert(path, PdfFormat.PDF_A_3A, ConvertErrorAction.Delete);
path = Paths.get(_dataDir, "ZUGFeRD", "ZUGFeRD-res.pdf").toString();
document.save(path);
}