Creando un PDF compatible con PDF/3-A y adjuntando una factura ZUGFeRD en C#

Adjuntar ZUGFeRD a PDF

El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.

Recomendamos seguir los siguientes pasos para adjuntar ZUGFeRD a PDF:

  • Defina una variable de ruta que apunte a una carpeta donde se encuentran los archivos PDF de entrada y salida.
  • Cree un objeto de documento cargando un archivo PDF existente (por ejemplo, “ZUGFeRD-test.pdf”) desde la ruta.
  • Cree un objeto FileSpecification proporcionando la ruta y la descripción de otro archivo llamado “factur-x.xml”, que contiene metadatos de factura conforme al estándar ZUGFeRD.
  • Agregue propiedades al objeto de especificación de archivo, como la descripción, el tipo MIME y la relación AF. La relación AF indica cómo se relaciona el archivo incrustado con el documento PDF. En este caso, se establece en “Alternativa”, lo que significa que el archivo incrustado es una representación alternativa del contenido PDF.
  • Agregue el objeto de especificación de archivo a la colección de archivos incrustados del documento. El nombre del archivo debe especificarse según el estándar ZUGFeRD, por ejemplo, “factur-x.xml”.
  • Convierta el documento al formato PDF/A-3B, un subconjunto de PDF que asegura la preservación a largo plazo de documentos electrónicos. PDF/A-3B permite incrustar archivos de cualquier formato en documentos PDF.
  • Guarde el documento convertido como un nuevo archivo PDF (por ejemplo, “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");
    }
}

El método de conversión toma un flujo, un formato PDF y una acción de error de conversión como parámetros. El parámetro de flujo se puede usar para guardar el registro de conversión. El parámetro de acción de error de conversión especifica qué hacer si ocurren errores durante la conversión. En este caso, se establece en “Eliminar”, lo que significa que cualquier elemento que no cumpla con el formato PDF/A-3B se eliminará del documento.