Преобразование PDF с возможностью поиска в PDF без поиска
У меня есть PDF, который доступен для поиска, и мне нужно преобразовать его в не подлежащий поиску.
Я попытался использовать Ghostscript и изменить его на JPEG, а затем обратно в PDF, что делает трюк, но размер файла слишком большой и неприемлемый.
Я попытался использовать Ghostscript для преобразования PDF в PS, а затем PDF, который также делает трюк, но качество недостаточно хорошее.
gswin32.exe -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pswrite -r1000 -sOutputFile=out.ps in.pdf
gswin32.exe -q -dNOPAUSE -dBATCH -dSAFER -dDEVICEWIDTHPOINTS=596 -dDEVICEHEIGHTPOINTS=834 -dPDFSETTINGS=/ebook -sDEVICE=pdfwrite -sOutputFile=out.pdf out.ps
есть ли способ дать хорошее качество Формат PDF?
в качестве альтернативы есть ли более простой способ конвертировать PDF с возможностью поиска в не подлежащий поиску?
3 ответов
для этого можно использовать Ghostscript. Вам нужно 2 действия:
-
преобразование PDF в файл PostScript, который имеет все используемые шрифты, преобразованные в контурные фигуры. Ключ здесь
-dNOCACHE
параметр:gs -o somepdf.ps -dNOCACHE -sDEVICE=pswrite somepdf.pdf
-
преобразовать PS обратно в PDF (и, возможно, снова удалить промежуточный PS):
gs -o somepdf-with-outlines.pdf -sDEVICE=pdfwrite somepdf.ps rm somepdf.ps
обратите внимание, что полученный PDF-файл, скорее всего, будет больше исходного. (И без дополнительные параметры командной строки, Все изображения в исходном PDF, вероятно, также будут преобразованы в соответствии с Ghostscript builtin по умолчанию, если вы не добавите больше параметров командной строки, чтобы сделать иначе. Но качество должно быть лучше, чем ваша собственная попытка использовать Ghostscript...)
обновление
видимо, С версии 9.15 (будет выпущен в сентябре/октябре 2014 года), Ghostscript поддерживает новая командная строка параметр:
-dNoOutputFonts
что вызовет выход устройства pdfwrite
, ps2write
и eps2write
"чтобы" сгладить "глифы в" основные " операции маркировки (а не писать шрифты на выход)".
это означает, что выше двух шагов можно избежать, и желаемый результат достигается с помощью одной команды:
gs -o somepdf-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite somepdf.pdf
предостережения: я проверил это с помощью нескольких входных файлов, используя самостоятельно составленный Ghostscript на основе текущих источников Git. В каждом случае он работал безупречно.
возможный способ получения не поддающегося поиску векторного pdf из векторного pdf с возможностью поиска -
-
burst pdf на отдельных страницах
pdftk file.pdf burst
-
конвертировать любую страницу в svg с
pdftocairo
, содержащиеся в poppler utils
for f in *.pdf; do pdftocairo -svg $f; done
3 . удалить все PDF в папке
4 . затем, с batikrasterizer
переконвертируйте все svg в pdf (на этот раз результирующие PDF-файлы будут сохранены векторными, но без searchable)
java -jar ./batik-rasterizer.jar -m application/pdf *.svg
заключительный шаг: присоединяйтесь ко всем результирующим одностраничным pd в одном многостраничном pdf-файле
pdftk *.pdf cat output out.pdf
Я думаю, что преобразование в изображение, такое как jpg, - это путь, возможно, стоит преобразовать в изображение am, оптимизировать/уменьшить размер изображений, а затем создать PDF с ними?