Преобразование 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 действия:

  1. преобразование PDF в файл PostScript, который имеет все используемые шрифты, преобразованные в контурные фигуры. Ключ здесь -dNOCACHE параметр:

    gs -o somepdf.ps -dNOCACHE -sDEVICE=pswrite somepdf.pdf
  2. преобразовать 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 с возможностью поиска -

  1. burst pdf на отдельных страницах

    pdftk file.pdf burst

  2. конвертировать любую страницу в 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 с ними?