Конвертировать PDF в PDF/A, PDF/E и PDF/X в Python

PDF в формат PDF/x означает возможность конвертировать PDF в дополнительные форматы, а именно PDF/A, PDF/E и PDF/X.

Преобразование PDF в PDF/A

Aspose.PDF for Python позволяет вам конвертировать PDF‑файл в PDF/A соответствующий файл PDF. Прежде чем это сделать, файл должен быть проверен. Эта тема объясняет, как это сделать.

Конвертируйте файл, используя метод Convert класса Document. Перед преобразованием PDF в файл, соответствующий PDF/A, проверьте PDF, используя метод Validate. Результат проверки сохраняется в XML‑файл, после чего этот результат также передаётся методу Convert. Вы также можете указать действие для элементов, которые нельзя преобразовать, используя перечисление ConvertErrorAction.

Метод ‘document.validate()’ проверяет, соответствует ли PDF‑файл стандарту PDF/A-1B (стандарту ISO для PDF, предназначенному для длительного архивирования). Результаты проверки сохраняются в файл журнала.

Преобразование PDF в PDF/A-1B

Следующий фрагмент кода показывает, как преобразовать PDF‑файлы в формат PDF/A‑1B:

  1. Загрузите PDF‑документ, используя ‘ap.Document’.
  2. Вызовите метод convert со следующими параметрами:
    • Путь к файлу журнала - хранит детали процесса конвертации и проверок соответствия.
    • Целевой формат - ‘ap.PdfFormat.PDF_A_1B’ (стандарт архивирования).
    • Действие при ошибке - ‘ap.ConvertErrorAction.DELETE’ — автоматически удаляет элементы, препятствующие соответствию.
  3. Сохраните преобразованный файл, совместимый с PDF/A, в путь вывода.
import aspose.pdf as ap
from os import path
import sys

def convert_PDF_to_PDFA(infile, outfile):
    """Convert PDF to PDF/A-1B format."""

    document = ap.Document(infile)
    document.convert(
        outfile.replace(".pdf", "-log.xml"),
        ap.PdfFormat.PDF_A_1B,
        ap.ConvertErrorAction.DELETE,
    )
    document.save(outfile)
    print(infile + " converted into " + outfile)

Преобразование PDF в PDF 2.0 и PDF/A-4

В этом примере показывается, как преобразовать PDF‑документ в более новые стандартизированные форматы: PDF 2.0 и PDF/A‑4. Оба преобразования помогают обеспечить соответствие современным спецификациям и требованиям к архивированию.

  1. Загрузите входной документ, используя ap.Document.
  2. Выполните первое преобразование в PDF 2.0, вызвав document.convert с:
    • Путь к файлу журнала для деталей конвертации.
    • Целевой формат - ‘ap.PdfFormat.V_2_0’.
    • Действие при ошибке - ‘ap.ConvertErrorAction.DELETE’ для удаления несоответствующих элементов.
  3. Выполните второе преобразование в PDF/A-4 тем же методом, обеспечив соответствие файла архивационным стандартам.
  4. Сохраните полученный документ в указанном пути вывода.
import aspose.pdf as ap
from os import path
import sys

def convert_PDF_to_PDFA4(infile, outfile):
    logfile = outfile.replace(".pdf", "_log.xml")

    document = ap.Document(infile)
    document.convert(logfile, ap.PdfFormat.V_2_0, ap.ConvertErrorAction.DELETE)
    document.convert(logfile, ap.PdfFormat.PDF_A_4, ap.ConvertErrorAction.DELETE)
    document.save(outfile)

Преобразование PDF в PDF/A-3A с встроенными файлами

Следующий фрагмент кода демонстрирует, как внедрять внешние файлы в PDF, а затем преобразовать PDF в формат PDF/A-3A, который поддерживает вложения и подходит для долгосрочного архивирования с внедренным содержимым.

  1. Загрузите входной PDF, используя ‘ap.Document’.
  2. Создайте объект ‘FileSpecification’, указывающий на файл для встраивания (например, “aspose-logo.jpg”) с описанием.
  3. Добавьте спецификацию файла в коллекцию ‘embedded_files’ PDF.
  4. Конвертируйте документ в PDF/A-3A, используя ‘document.convert’, указывая:
    • Путь к файлу журнала.
    • Целевой формат - ‘ap.PdfFormat.PDF_A_3A’.
    • Действие при ошибке - ‘ap.ConvertErrorAction.DELETE’ для удаления несоответствующих элементов.
  5. Сохраните преобразованный PDF в путь вывода.
import aspose.pdf as ap
from os import path
import sys

def convert_PDF_to_PDFA_with_attachment(infile, attachement_file, outfile):
    logfile = outfile.replace(".pdf", "-log.xml")
    document = ap.Document(infile)

    fileSpecification = ap.FileSpecification(attachement_file, "Large Image file")
    document.embedded_files.add(fileSpecification)
    document.convert(
        logfile, ap.PdfFormat.PdfFormat.PDF_A_3A, ap.ConvertErrorAction.DELETE
    )
    document.save(outfile)

Преобразование PDF в PDF/A-1B с заменой шрифтов

Эта функция преобразует PDF в формат PDF/A-1B, заменяя отсутствующие шрифты доступными. Это гарантирует, что преобразованный PDF останется визуально согласованным и соответствующим требованиям архивных стандартов.

  1. Загрузите PDF, используя ‘ap.Document’.
  2. Конвертировать PDF в PDF/A-1B с помощью ‘document.convert’, указывая:
    • Путь к файлу журнала.
    • Целевой формат - ‘ap.PdfFormat.PDF_A_1B’.
    • Действие при ошибке - ‘ap.ConvertErrorAction.DELETE’ для удаления несоответствующих элементов.
  3. Сохраните преобразованный PDF в путь вывода.
import aspose.pdf as ap
from os import path
import sys

def convert_PDF_to_PDFA_replace_missing_fonts(infile, outfile):
    logfile = outfile.replace(".pdf", "-log.xml")
    try:
        ap.text.FontRepository.find_font("AgencyFB")

    except ap.FontNotFoundException:
        font_substitution = ap.text.SimpleFontSubstitution("AgencyFB", "Arial")
        ap.text.FontRepository.Substitutions.append(font_substitution)

    document = ap.Document(infile)
    document.convert(logfile, ap.PdfFormat.PDF_A_1B, ap.ConvertErrorAction.DELETE)
    document.save(outfile)

Преобразование PDF в PDF/A-1B с автоматическим тегированием

Эта функция преобразует PDF‑документ в формат PDF/A-1B, автоматически добавляя теги к содержимому для обеспечения доступности и структурной согласованности. Автоматическое тегирование улучшает удобство использования документа для программ чтения с экрана и обеспечивает правильную семантическую структуру.

  1. Загрузите PDF, используя ‘ap.Document’.
  2. Создайте ‘PdfFormatConversionOptions’, указывая:
    • Путь к файлу журнала.
    • Целевой формат - ‘ap.PdfFormat.PDF_A_1B’.
    • Действие при ошибке - ‘ap.ConvertErrorAction.DELETE’ для удаления несоответствующих элементов.
  3. Настройте ‘AutoTaggingSettings’:
    • Включить ’enable_auto_tagging = True’.
    • Установите ‘heading_recognition_strategy = AUTO’ для автоматического определения заголовков.
  4. Назначьте настройки авторазметки параметрам конвертации.
  5. Преобразуйте PDF, используя ‘document.convert(options)’.
  6. Сохраните преобразованный PDF в путь вывода.
import aspose.pdf as ap
from os import path
import sys

def convert_PDF_to_PDFA_with_automatic_tagging(infile, outfile):
    logfile = outfile.replace(".pdf", "-log.xml")

    document = ap.Document(infile)
    options = ap.PdfFormatConversionOptions(
        logfile, ap.PdfFormat.PDF_A_1B, ap.ConvertErrorAction.DELETE
    )

    auto_tagging_settings = ap.AutoTaggingSettings()
    auto_tagging_settings.enable_auto_tagging = True

    auto_tagging_settings.heading_recognition_strategy = (
        ap.HeadingRecognitionStrategy.AUTO
    )

    options.auto_tagging_settings = auto_tagging_settings
    document.convert(options)
    document.save(outfile)
    print(infile + " converted into " + outfile)

Преобразование PDF в PDF/E

Этот фрагмент кода демонстрирует, как преобразовать PDF‑документ в формат PDF/E-1, который является стандартом ISO, предназначенным для инженерной и технической документации. Этот формат сохраняет точный макет, графику и метаданные, необходимые для инженерных рабочих процессов.

  1. Загрузите исходный PDF, используя ‘ap.Document’.
  2. Создайте ‘PdfFormatConversionOptions’, указывая:
    • Путь к файлу журнала для отслеживания проблем преобразования.
    • Целевой формат - ‘ap.PdfFormat.PDF_E_1’.
    • Действие при ошибке - ‘ap.ConvertErrorAction.DELETE’ для удаления несоответствующих элементов.
  3. Преобразуйте PDF, используя ‘document.convert(options)’.
  4. Сохраните преобразованный PDF в указанный путь вывода.
  5. Выведите сообщение подтверждения.
import aspose.pdf as ap
from os import path
import sys

def convert_PDF_to_PDF_E(infile, outfile):
    logfile = outfile.replace(".pdf", "-log.xml")

    document = ap.Document(infile)
    options = ap.PdfFormatConversionOptions(
        logfile, ap.PdfFormat.PDF_E_1, ap.ConvertErrorAction.DELETE
    )

    document.convert(options)

    # Save PDF document
    document.save(outfile)
    print(infile + " converted into " + outfile)

Преобразование PDF в PDF/X

Следующий фрагмент кода преобразует PDF‑документ в формат PDF/X-4, который является стандартом ISO, часто используемым в полиграфии и издательской индустрии. PDF/X-4 обеспечивает точность цветов, сохраняет прозрачность и встраивает ICC‑профили для обеспечения согласованного вывода на разных устройствах.

  1. Загрузите исходный PDF, используя ‘ap.Document’.
  2. Создайте ‘PdfFormatConversionOptions’, указывая:
    • Путь к файлу журнала.
    • Целевой формат - ‘ap.PdfFormat.PDF_X_4’.
    • Действие при ошибке - ‘ap.ConvertErrorAction.DELETE’ для удаления несоответствующих элементов.
  3. Предоставьте файл ICC‑профиля для управления цветом через ‘icc_profile_file_name’.
  4. Укажите OutputIntent с идентификатором условия (например, “FOGRA39”) для требований к печати.
  5. Преобразуйте PDF, используя ‘document.convert()’.
  6. Сохраните преобразованный PDF в указанный путь вывода.
import aspose.pdf as ap
from os import path
import sys

def convert_PDF_to_PDF_X(infile, outfile):
    logfile = outfile.replace(".pdf", "-log.xml")

    document = ap.Document(infile)
    options = ap.PdfFormatConversionOptions(
        logfile, ap.PdfFormat.PDF_X_4, ap.ConvertErrorAction.DELETE
    )

    # Provide the name of the external ICC profile file (optional)
    options.icc_profile_file_name = path.join(
        path.dirname(infile), "ISOcoated_v2_eci.icc"
    )
    # Provide an output condition identifier and other necessary OutputIntent properties (optional)
    options.output_intent = ap.OutputIntent("FOGRA39")

    document.convert(options)

    # Save PDF document
    document.save(outfile)
    print(infile + " converted into " + outfile)

Связанные преобразования