#pdf #pdf-generation #ghostscript
#PDF #генерация PDF #ghostscript
Вопрос:
Я пишу пакетный файл для эмуляции ручной задачи открытия каждого PDF-файла в папке с помощью Acrobat и печати в формате PDF.
Цель ручной задачи — получить равномерный размер страницы 8-1 / 2 x 11 и уменьшенные, сжатые размеры файлов.
То, что я написал до сих пор, хорошо справляется, но в некоторых больших PDF-файлах результаты скрипта намного больше, чем результаты печати в PDF.
Вот что у меня есть до сих пор:
ECHO attempting compression subroutine... >>"%log%"
cd %GS_DIR%
gswin64c.exe ^
-o "%drive%%filepath%%name%-c.pdf" ^
-sDEVICE=pdfwrite ^
-sPAPERSIZE=letter ^
-dFitPage ^
-dCompressPages=true ^
-dCompressFonts=true ^
-dDownsampleColorImages=true ^
-dDownsampleGrayImages=true ^
-dDownsampleMonoImages=true ^
-dColorImageResolution=300 ^
-dGrayImageResolution=300 ^
-dMonoImageResolution=300 ^
-dColorImageDownsampleThreshold=1.0 ^
-dGrayImageDownsampleThreshold=1.0 ^
-dMonoImageDownsampleThreshold=1.0 ^
-dProcessColorModel=/DeviceGray ^
-dColorConversionStrategy=/Gray ^
-dColorConversionStrategyForImages=/Gray ^
-dCompatibilityLevel=1.4 ^
-dEmbedAllFonts=false ^
-c ".setpdfwrite <</AlwaysEmbed [ ] /NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats] /ColorImageFilter /DCTEncode /GrayImageFilter /DCTEncode /MonoImageFilter /CCITTFaxEncode /OutputICCProfile (None)>> setdistillerparams" ^
-f %fullpath%
ECHO compression complete, cleaning up files... >>"%log%"
Я думаю, что проблема может быть связана со шрифтом, но я не уверен, как это исправить, вот общее сообщение от одного из файлов во время выполнения ghost script:
Can't find (or can't open) font file %rom%Resource/Font/ArialMT.
Can't find (or can't open) font file ArialMT.
Can't find (or can't open) font file %rom%Resource/Font/ArialMT.
Can't find (or can't open) font file ArialMT.
Querying operating system for font files...
Didn't find this font on the system!
Substituting font Helvetica for ArialMT.
Loading NimbusSanL-Reg font from %rom%Resource/Font/NimbusSanL-Reg... 4826216 3500251 7703168 6115407 3 done.
Can't find (or can't open) font file %rom%Resource/Font/Arial-BoldMT.
Can't find (or can't open) font file Arial-BoldMT.
Can't find (or can't open) font file %rom%Resource/Font/Arial-BoldMT.
Can't find (or can't open) font file Arial-BoldMT.
Didn't find this font on the system!
Substituting font Helvetica-Bold for Arial-BoldMT.
Loading NimbusSanL-Bol font from %rom%Resource/Font/NimbusSanL-Bol... 5025328 3699533 7797072 6194808 3 done.
Есть идеи по улучшению параметров для эмуляции поведения печати в PDF?
Комментарии:
1. Не устанавливайте никаких параметров. Значения по умолчанию выбраны разумными, добавление чего-либо еще заставляет код выполнять дополнительные проверки и потенциально выполнять дополнительную работу (например, уменьшать дискретизацию изображений), что требует времени. Конечно, поскольку вы, похоже, делаете это для уменьшения размера файла, возможно, это важный параметр для вас, но тогда это будет стоить вам производительности….
2. Вы также (например) преобразуете все в серый цвет, что означает проверку и изменение каждого отдельного пикселя каждого изображения, действительно ли удивительно, что это происходит медленно?
3. Печать PDF в PDF, иначе известная как «повторная обработка», вероятно, является наихудшим способом достижения вашей цели. Для этого гораздо лучше использовать настоящий PDF API.
4. На самом деле он не печатает его, он запускает его через интерпретатор PDF с набором команд для изменения аспектов содержимого, а затем выдает его в формате PDF. Хотя я не думаю, что это хорошая идея, на самом деле это не «печать».
5. Чтобы понять, почему файл больше, чем «печать в PDF» (вы действительно печатаете с Acrobat на виртуальный принтер?) Нам нужно было бы знать намного больше о том, как настроена ваша «печать в PDF», и нам понадобится, по крайней мере, пример файла проблемы для просмотра.