Извлечение вложений из PDF
Извлечение конкретного вложения из PDF
Извлеките один встраиваемый файл из PDF‑документа с помощью Python и Aspose.PDF. Он ищет вложение по имени, извлекает его содержимое и сохраняет как отдельный файл. Это полезно для доступа к вложенным документам, таким как отчёты, журналы или вспомогательные файлы, хранящиеся внутри PDF.
- Определите функцию ‘extract_single_attachment()’.
- Откройте PDF‑документ.
- Найдите вложение.
- Извлеките содержимое вложения.
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")
Отобразить метаданные файлового вложения
Эта вспомогательная функция выводит информацию о метаданных из объекта спецификации файла. Обычно она используется при работе с внедрёнными файловыми вложениями в PDF с помощью Aspose.PDF, позволяя разработчикам просматривать такие детали, как контрольная сумма, дата создания, дата модификации и размер файла.
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}")
Извлечение и проверка всех вложений PDF
Этот фрагмент кода демонстрирует, как извлекать все вложенные файлы из PDF‑документа с использованием Python и Aspose.PDF. Он не только сохраняет каждое вложение в указанную папку, но и выводит подробные метаданные, такие как имя файла, описание, тип MIME, контрольная сумма и метки времени. Это полезно для аудита, экспорта или обработки вложенного контента в 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())
Извлечение файлов из аннотаций вложений PDF
Извлеките вложенный файл из аннотации FileAttachment в PDF с помощью Python и Aspose.PDF. Он ищет на первой странице первую аннотацию вложения, извлекает вложенный файл и сохраняет его в выбранный выходной каталог. Это полезно, когда PDF‑файлы содержат кликабельные значки вложения файлов вместо стандартных коллекций вложенных файлов.
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}")