Extraer archivos adjuntos de PDF
Extraer adjunto específico de PDF
Extraiga un archivo incrustado único de un documento PDF usando Python y Aspose.PDF. Busca un adjunto por nombre, recupera su contenido y lo guarda como un archivo separado. Esto es útil para acceder a documentos incrustados como informes, registros o archivos de apoyo almacenados dentro del PDF.
- Definir función ’extract_single_attachment()'.
- Abrir documento PDF.
- Buscar adjunto.
- Extraer contenido del adjunto.
import aspose.pdf as ap
def extract_single_attachment(infile, attachment_name, outfile):
with ap.Document(infile) as document:
print(f"Extracting attachment: {attachment_name}")
attachment_found = False
for file_spec in document.embedded_files:
if file_spec.name == attachment_name:
with open(outfile, "wb") as f:
f.write(file_spec.contents.read())
print("Attachment extracted successfully")
attachment_found = True
break
if not attachment_found:
raise ValueError(f"Attachment '{attachment_name}' not found in PDF")
Mostrar metadatos del archivo adjunto
Esta función auxiliar imprime la información de metadatos de un objeto de especificación de archivo. Normalmente se usa al trabajar con archivos adjuntos incrustados en PDFs usando Aspose.PDF, lo que permite a los desarrolladores inspeccionar detalles como suma de verificación, fecha de creación, fecha de modificación y tamaño del archivo.
def _print_file_params(params):
"""Helper to print file specification parameters."""
if params:
print(f"CheckSum: {params.check_sum}")
print(f"Creation Date: {params.creation_date}")
print(f"Modification Date: {params.mod_date}")
print(f"Size: {params.size}")
Extraer e inspeccionar todos los archivos adjuntos PDF
Este fragmento de código muestra cómo extraer todos los archivos incrustados de un documento PDF usando Python y Aspose.PDF. No solo guarda cada adjunto en una carpeta especificada, sino que también imprime metadatos detallados como el nombre del archivo, la descripción, el tipo MIME, la suma de verificación y las marcas de tiempo. Esto es útil para auditorías, exportaciones o el procesamiento de contenido incrustado en archivos PDF.
from os import path
import aspose.pdf as ap
def extract_attachments(infile, output_dir):
with ap.Document(infile) as document:
print(f"Total files: {len(document.embedded_files)}")
for file_spec in document.embedded_files:
print(f"Name: {file_spec.name}")
print(f"Description: {file_spec.description}")
print(f"Mime Type: {file_spec.mime_type}")
_print_file_params(file_spec.params)
output_path = path.join(output_dir, file_spec.name)
with open(output_path, "wb") as f:
f.write(file_spec.contents.read())
Extraer archivos de anotaciones de adjuntos PDF
Extraer un archivo incrustado de una anotación FileAttachment en un PDF usando Python y Aspose.PDF. Busca en la primera página la primera anotación de adjunto, recupera el archivo incrustado y lo guarda en un directorio de salida seleccionado. Esto es útil cuando los PDF contienen íconos de adjuntos de archivo clicables en lugar de colecciones estándar de archivos incrustados.
from os import path
import aspose.pdf as ap
from aspose.pycore import cast
def extract_file_attachment_annotation(infile, output_dir):
# Open PDF document
with ap.Document(infile) as document:
# Get first page
page = document.pages[1]
# Find first FileAttachment annotation
file_attachment = next(
(
annot
for annot in page.annotations
if annot.annotation_type == ap.annotations.AnnotationType.FILE_ATTACHMENT
),
None,
)
if file_attachment is None:
print("No FileAttachment annotation found on the first page.")
return
# Cast to FileAttachmentAnnotation
faa = cast(ap.annotations.FileAttachmentAnnotation, file_attachment)
# Access embedded file
file_spec = faa.file
print(f"File name: {file_spec.name}")
# Save embedded file to disk
output_path = path.join(output_dir, f"extracted-{file_spec.name}")
with open(output_path, "wb") as f:
f.write(file_spec.contents.read())
print(f"Extracted to: {output_path}")