Création d'un PDF conforme PDF/3-A et attachement d'une facture ZUGFeRD en Python

Attacher ZUGFeRD au PDF

Nous recommandons les étapes suivantes pour joindre ZUGFeRD au PDF :

  1. Importez la bibliothèque Aspose.PDF et donnez‑lui un alias ap pour plus de commodité.
  2. Définissez le chemin du répertoire où se trouvent les fichiers PDF d’entrée et de sortie.
  3. Définissez le chemin du fichier PDF qui sera traité.
  4. Chargez le fichier PDF à partir de la variable de chemin et créez un objet Document.
  5. Créez un objet FileSpecification pour le fichier XML contenant les métadonnées de la facture. Utilisez la variable de chemin et une chaîne de description pour créer l’objet FileSpecification.
  6. Définir le mime_type et le af_relationship propriétés de l’objet FileSpecification à text/xml et ALTERNATIVE, respectivement.
  7. Ajoutez l’objet fileSpecification à la collection de fichiers intégrés de l’objet document. Cela attache le fichier XML au document PDF en tant que fichier de métadonnées de facture.
  8. Convertir le document PDF au format PDF/A-3A. Utilisez le chemin vers le fichier journal, le PdfFormat.PDF_A_3A énumération, et le ConvertErrorAction.DELETE énumération pour convertir l’objet Document.
  9. Enregistrez le document PDF avec le ZUGFeRD attaché.
import sys
import os
import aspose.pdf as ap

def attach_invoice_zugferd_format(infile, invoice, outfile):
    document = ap.Document(infile)

    # Create a FileSpecification object for the XML file that contains the invoice metadata
    description = "Invoice metadata conforming to ZUGFeRD standard"
    file_specification = ap.FileSpecification(invoice, description)

    # Set the MIME type and the AFRelationship properties of the embedded file
    file_specification.mime_type = "text/xml"
    file_specification.af_relationship = ap.AFRelationship.ALTERNATIVE

    # Add the embedded file to the PDF document's embedded files collection
    document.embedded_files.add("factur", file_specification)

    # Convert the PDF document to the PDF/A-3A format
    log_path = outfile.replace(".pdf", "_log.xml")
    document.convert(log_path, ap.PdfFormat.PDF_A_3A, ap.ConvertErrorAction.DELETE)
    document.save(outfile)