Criando PDF compatível com PDF/3-A e anexando fatura ZUGFeRD em C#

Anexar ZUGFeRD ao PDF

O seguinte trecho de código também funciona com a biblioteca Aspose.PDF.Drawing.

Recomendamos os seguintes passos 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.
  • Crie um objeto de documento carregando um arquivo PDF existente (por exemplo, “ZUGFeRD-test.pdf”) do caminho.
  • Crie um objeto FileSpecification fornecendo o caminho e a descrição de outro arquivo chamado “factur-x.xml”, que contém metadados da fatura em conformidade com o padrão ZUGFeRD.
  • Adicione propriedades ao objeto de especificação de arquivo, como a descrição, tipo MIME e relação AF. A relação AF indica como o arquivo incorporado está relacionado ao documento PDF. Neste caso, está definido como “Alternativa”, significando que o arquivo incorporado é uma representação alternativa do conteúdo PDF.
  • Adicione o objeto de especificação de arquivo à coleção de arquivos incorporados do documento. O nome do arquivo deve ser especificado de acordo com o padrão ZUGFeRD, por exemplo, “factur-x.xml”.
  • Converta o documento para o formato PDF/A-3B, um subconjunto do PDF que garante a preservação a longo prazo de documentos eletrônicos. O PDF/A-3B 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”).
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AttachZUGFeRD()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
    
    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "ZUGFeRD-testInput.pdf"))
    {
        // Setup new file to be added as attachment
        var description = "Invoice metadata conforming to ZUGFeRD standard";
        var fileSpecification = new Aspose.Pdf.FileSpecification(dataDir + "ZUGFeRD-testXmlInput.xml", description)
        {
            Description = "Zugferd",
            MIMEType = "text/xml",
            Name = "factur-x.xml"
        };
        // Add attachment to document's attachment collection
        document.EmbeddedFiles.Add(fileSpecification);
        document.Convert(new MemoryStream(), Aspose.Pdf.PdfFormat.ZUGFeRD, Aspose.Pdf.ConvertErrorAction.Delete);
        // Save PDF document
        document.Save(dataDir + "AttachZUGFeRD_out.pdf");
    }
}

O método de conversão recebe um stream, um formato PDF e uma ação de erro de conversão como parâmetros. O parâmetro de stream pode ser usado para salvar o log de conversão. O parâmetro de ação de erro de conversão especifica o que fazer se ocorrerem erros durante a conversão. Neste caso, está definido como “Excluir”, o que significa que quaisquer elementos que não estejam em conformidade com o formato PDF/A-3B serão excluídos do documento.