Creación de PDF compatible con PDF/3-A y adjuntar factura ZUGFeRD en Python
Adjuntar ZUGFeRD al PDF
Recomendamos seguir los siguientes pasos para adjuntar ZUGFeRD al PDF:
-
Importe la biblioteca Aspose.PDF y asígnele un alias de ap para mayor comodidad.
-
Defina la ruta al directorio donde se encuentran los archivos PDF de entrada y salida.
-
Defina la ruta al archivo PDF que se procesará.
-
Cargue el archivo PDF desde la variable de ruta y cree un objeto Document.
-
Cree un objeto FileSpecification para el archivo XML que contiene los metadatos de la factura. Use la variable de ruta y una cadena de descripción para crear el objeto FileSpecification.
-
Establece las propiedades
mime_type
yaf_relationship
del objeto FileSpecification atext/xml
yALTERNATIVE
, respectivamente. -
Agrega el objeto fileSpecification a la colección de archivos incrustados del objeto documento. Esto adjunta el archivo XML al documento PDF como un archivo de metadatos de factura.
-
Convierte el documento PDF al formato PDF/A-3A. Usa la ruta al archivo de registro, la enumeración
PdfFormat.PDF_A_3A
y la enumeraciónConvertErrorAction.DELETE
para convertir el objeto documento. -
Guarda el documento PDF con el ZUGFeRD adjunto.
import aspose.pdf as ap
# Define la ruta al directorio donde se encuentran los archivos PDF de entrada y salida
_dataDir = "./"
# Carga el archivo PDF que será procesado
path = _dataDir + "ZUGFeRD/ZUGFeRD-test.pdf"
document = ap.Document(path)
# Crea un objeto FileSpecification para el archivo XML que contiene los metadatos de la factura
description = "Metadatos de factura conformes al estándar ZUGFeRD"
path = _dataDir + "ZUGFeRD/factur-x.xml"
fileSpecification = ap.FileSpecification(path, description)
# Establece el tipo MIME y las propiedades AFRelationship del archivo incrustado
fileSpecification.mime_type = "text/xml"
fileSpecification.af_relationship = ap.AFRelationship.ALTERNATIVE
# Agrega el archivo incrustado a la colección de archivos incrustados del documento PDF
document.embedded_files.add("factur",fileSpecification)
# Convierte el documento PDF al formato PDF/A-3A
path = _dataDir + "ZUGFeRD/log.xml"
document.convert(path, ap.PdfFormat.PDF_A_3A, ap.ConvertErrorAction.DELETE)
# Guarda el documento PDF con el ZUGFeRD adjunto
path = _dataDir + "ZUGFeRD/ZUGFeRD-res.pdf"
document.save(path)