Инструмент(ы) командной строки или информация для создания PDF-отчета

Вопрос или проблема

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

Ближе всего к этому я подошел, используя команду “montage” ImageMagick. Проблема была в том, что ImageMagick растеризует весь свой ввод перед тем, как сделать что-либо еще, и поэтому, когда я пытался получить даже всего лишь четыре или пять страниц на выходе с нужным мне разрешением, моей рабочей станции потребовалось более минуты на выполнение работы, а полученный файл весил 130 МБ, что является абсурдной тратой ресурсов. И даже тогда линейные рисунки страдали от алиасинга.

Я смотрел в сторону Ghostscript, но он, похоже, ориентирован на опытных профессионалов в области электронной верстки. Даже книги, которые можно было бы купить, нет — только загадочная 20-страничная белая книга, которая, по-видимому, предназначена для людей, которые уже знают, как пользоваться Ghostscript. Я бы не хотел тратить неделю на изучение тонкостей управления цветом GS9 и формата LaTeX, только чтобы узнать, что Ghostscript не может сделать то, что мне нужно. Так что, я хотя бы на правильном пути? QPDF был слишком ограничен в своем наборе функций, а MuTool предназначен для другой области проблем — если я не ошибаюсь.

Платформа — сервер Windows. Я не могу сказать, каков может быть бюджет. Это необычный проект, который является частью гораздо более крупного проекта интеграции CAD/CAM, который я выполняю. Это довольно низкий приоритет — или, по крайней мере, будет до того, как начальник увидит, сколько мы тратим на бумагу 😉

Вам определенно стоит взглянуть на PDFtk pro & server. (Эта пара обойдется вам в 3,99 доллара).

  • Профессиональная версия — это графический интерфейс, который позволяет много контролировать.
  • Серверная версия — это командная строка для профессиональной версии.

Они позволят вам:

  1. Объединять PDF-документы или собирать сканированные страницы PDF
  2. Разделять PDF-страницы на новый документ
  3. Поворачивать PDF-документы или страницы
  4. Декодировать ввод по мере необходимости (требуется пароль)
  5. Шифровать выходные данные по желанию
  6. Заполнять PDF-формы данными X/FDF и/или уплощать формы
  7. Генерировать трафареты данных FDF из PDF-форм
  8. Накладывать водяной знак на фон или печать на передний план
  9. Сообщать метрики PDF, закладки и метаданные
  10. Добавлять/обновлять закладки PDF или метаданные
  11. Прикреплять файлы к PDF-страницам или PDF-документу
  12. Разархивировать вложения PDF
  13. Разделить PDF-документ на отдельные страницы
  14. Распаковывать и повторно сжимать потоки страниц
  15. Восстанавливать поврежденные PDF (где это возможно)

Для большей гибкости, но с крутой кривой обучения вы также можете посмотреть на ReportLab, где вы найдете как коммерческие, так и открытые решения. Если вы хотите воспользоваться открытым решением, я могу порекомендовать книгу Майкла Дрисколла Обработка PDF с помощью ReportLab и Python как отличное введение.

Замечание. И PDFtk, и python+ReportLab кроссплатформенные, так что ОС не должна быть проблемой.

Ответ или решение

Для выполнения задачи по созданию PDF-отчета с использованием командных инструментов, вам будет полезно рассмотреть несколько подходящих решений, которые позволят эффективно обрабатывать PDF-файлы, сведя к минимуму потребление ресурсов и время обработки.

Использование PDFtk

Первым вариантом, который вам стоит рассмотреть, является PDFtk (PDF Toolkit). Это мощный инструмент, предоставляющий как GUI, так и командную строку, что позволяет выполнять различные операции с PDF-документами, включая:

  • Объединение документов.
  • Разделение многостраничных PDF на отдельные страницы.
  • Поворот страниц.
  • Добавление водяных знаков или штампов на фоне или на переднем плане.
  • Подсчет метрик и получение информации о документах.

Преимущества PDFtk:

  • PDFtk Pro поставляется с графическим интерфейсом, который упрощает использование, тогда как серверная версия позволяет автоматизировать процессы через командную строку.
  • Он поддерживает множество операций с PDF без необходимости конвертации в растровые форматы, что уменьшает размер выходных файлов и гарантирует высокое качество графики.

Для вашего проекта, используя PDFtk, вы сможете объединить заголовок с многостраничным PDF-файлом, который содержит векторную графику, создав сетку из шести ячеек. Каждый элемент будет качественно обработан без необходимости растеризации.

Использование ReportLab

Если вам нужна большая гибкость, вы можете рассмотреть библиотеку ReportLab на Python. ReportLab позволяет программно создавать и компилировать PDF-документы, что дает возможность установить четкое управление над размещением элементов, размерами ячеек и качеством графики.

Преимущества ReportLab:

  • Полный контроль над структурой выходного документа, что особенно полезно для специфических задач, как ваша.
  • Не требует преобразования графики, что позволяет сохранять качество векторных объектов.
  • Широкие возможности для кастомизации и создания сложных отчетов.

Для работы с ReportLab, вы можете ознакомиться с книгами, такими как ReportLab PDF Processing with Python от Майкла Дрисколла, которая предоставляет простое введение в библиотеку и ее возможности.

Рекомендации

  1. PDFtk подойдет для быстрой и удобной обработки PDF-файлов, если ваш рабочий процесс разрознен и вам нужно выполнять стандартные операции.
  2. Если ваша задача требует высокой степени настройки и автоматизации, то модуль ReportLab будет вашим лучшим выбором, так как предоставляет большую гибкость в дизайне документа.

Заключение

Оба инструмента, PDFtk и ReportLab, доступны для платформы Windows и не потребуют значительных временных затрат на изучение, по сравнению с Ghostscript. При правильной настройке вы сможете создать эффективную систему для генерации отчетов без потери качества и излишних затрат.

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

Оцените материал
Добавить комментарий

Капча загружается...