Я пытаюсь понять, как конвертировать PDF-файлы в формат pdfa2b для архивирования. Пакетный процесс обрабатывает одновременно только 600–800 файлов, а у нас их более полумиллиона. Если мы будем делать это один за другим, это займет целую вечность (вероятно, 20 месяцев такими темпами). Любая помощь приветствуется. Есть ли в Adobe способ добиться автоматизации или кто-нибудь сможет помочь мне указать правильное направление в отношении сценариев с открытым исходным кодом?
Примечание. Помимо инструментов Adobe, я также пробовал использовать Ghostscript. Я упираюсь в стену в вопросе добавления правильных цветовых профилей.
ОШИБКА ПРОВЕРКИ PDF БЕЗ ДОБАВЛЕНИЯ ПРОФИЛЯ ICC:
Device process color used but no PDF/A OutputIntent
Has Output Intent
Base color space name
Outside visible page area
Параметры Ghostscript в Python:
gs_command = [
r"C:\Program Files\gs\gs9.55.0\bin\gswin64c.exe", # Full path to the Ghostscript executable
"-dPDFA=2",
"-dBATCH",
"-dNOPAUSE",
"-sDEVICE=pdfwrite",
f"-sColorConversionStrategy = {color_conversion_strategy}",
f"-sProcessColorModel = {process_color_model}",
f"-sOutputICCProfile = {icc_profile_path}", # Path to the ICC profile
"-sPDFACompatibilityPolicy=1",
f"-sOutputFile = {output_pdf}",
input_pdf
]
Ошибка:
Ошибка: /undefined в --runpdf-- Стек операндов: --nostringval-- 1
0 --nostringval-- ( **** Ошибка: интерпретатор PDF обнаружил ошибка при обработке файла.\n) Стек выполнения: %interp_exit
.runexec2 --nostringval-- runpdf --nostringval-- 2
%stopped_push --nostringval-- runpdf runpdf false 1
%stopped_push 1949 1 3 %oparray_pop 1948 1 3
%oparray_pop 1933 1 3 %oparray_pop 1934 1 3
%oparray_pop runpdf Стек словарей: --dict:753/1123(ro)(G)--
--dict:0/20(G)-- --dict:86/200(L)-- --dict:2/10(L)-- Текущий режим распределения — локальный. Последняя ошибка ОС: Разрешение отклоненоОшибка: Команда '['D:\Projects\PDFProcessing\packages\gs10.03.1\bin\gswin64c.exe', '-dPDFA=2', '-dBATCH', '-dNOPAUSE', '-sProcessColorModel=DeviceCMYK', '-sDEVICE=pdfwrite', '-sColorConversionStrategy=CMYK', '-sProcessColorModel=DeviceCMYK', '-sOutputICCProfile=../packages/Adobe ICC Profiles (конечный пользователь)/Generic Серая гамма 2.2 Profile.icc', '-sPDFACompatibilityPolicy=1', '-sOutputFile=../resources/output_pdfa2b.pdf', '../resources/test.pdf']' вернул ненулевой статус выхода 1. GPL Ghostscript 10.03.1: Неустранимая ошибка, код выхода 1 Вывод команды: Никто
Спасибо! Я попробую протестировать, используя их сценарий проверки. Возвращение в библиотеку в среду. Ранее я получил файл A2, но в нем была ошибка проверки, о которой я упоминал в сообщении. но это было без использования этой стратегии преобразования цветов.
Вы не использовали файл «pdfa_def.ps», это небольшая программа PostScript, которая, помимо прочего, устанавливает примечание OutputIntent, а НЕ OutputICCProfile, который вы не хотите устанавливать и, вероятно, является причиной вашей ошибки. Я бы рекомендовал запускать Ghostscript из командной строки, пока вы не сделаете все правильно, а затем переместить его в Python. Существует пример файла pdfa_def.ps (который вы ДОЛЖНЫ отредактировать), включенного в Ghostpdl/lib. Вам также необходимо предоставить разрешение на чтение профиля ICC, который вы включаете в pdfa_def.ps, добавив --permit-file-read= <имя профиля icc> в командную строку.
Документацию по созданию файла PDF/A можно найти здесь Ghostscript.readthedocs.io/en/latest/…






PDF/A имеет множество разновидностей, но простейшими требованиями являются удаление несовместимых объектов и добавление отсутствующих шрифтов, а «намерение» цвета — более драконовское требование, которого следует избегать, если это возможно.
Таким образом, самая простая команда GhostScript — просто запуститься с отметками PDF/A-2b, и GhostScript может легко сделать это с помощью нескольких инструкций.
При использовании файла package.CMD для перетаскивания или подачи имени файла это будет минимум.
set "GSC=%ProgramFiles%\gs\gs10.03.1\bin\gswin32c.exe"
set "in=%~dpn1.pdf"
set "out=%~dpn1-pdfA-2b.pdf"
"%GSC%" -sDEVICE=pdfwrite -dPDFA=2 -dPDFACompatibilityPolicy=1 -sColorConversionStrategy=UseDeviceIndependentColor -o"%out%" -f "%in%"
Используя данный тестовый файл, мы можем убедиться, что он в порядке.
Это становится намного сложнее, если вам нужно добавить цвета, но в основном следуйте документам GhostScript, чтобы отредактировать свой собственный цветовой профиль. PS и включите переключатель.
Так что будьте осторожны после редактирования любого желаемого профиля - переключатели включаются в пользовательский профиль.ps. --permit-file-read=<icc profile name> и или
--permit-file-read = "profile.PS" это позволит избежать упоминания Permission denied
**** Ошибка: произошла ошибка рисования страницы. Не удалось нарисовать эту страницу вообще, страница будет отсутствовать в выводе. GPL Ghostscript 10.01.2: Неустранимая ошибка, код выхода 255 GPL Ghostscript 10.01.2: Объект страницы был зарезервирован для назначения аннотации, но такая страница не была нарисована, аннотация в выводе будет недействительной. GPL Ghostscript 10.01.2: ОШИБКА: ioerror (-12) при закрытии устройства pdfwrite. Знаете ли вы об этой ошибке? я преобразовал его однажды раньше, но теперь выдает эту ошибку.
Ой, у меня хранилище заполнено. В Windows: Системы > Хранилище > Временные файлы (или другие файлы).
в версиях это просто смесь того, что я пробовал между ними. Я использую 10.03. Ну, это задача для некоммерческой библиотеки. Я делаю это как побочный проект, чтобы выяснить, смогу ли я помочь им сделать это быстрее. Я только сегодня начал изучать скрипты-призраки, поэтому буду рад любой помощи. у меня есть тестовый файл здесь — github.com/sachins301/PDFProcessing/blob/main/resources/…