Преобразование PDF с возможностью поиска в PDF без возможности поиска - PullRequest
6 голосов
/ 02 февраля 2012

У меня есть 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 ]

11 голосов
/ 10 апреля 2012

Вы можете использовать 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, если вы не добавите больше параметров командной строки, чтобы сделать иначе. Но качество должно быть лучше, чем ваша собственная попытка использовать Ghostscript...)


Обновление

По-видимому, с версии 9.15 (будет выпущено в сентябре / октябре 2014 года), Ghostscript будетподдержка нового параметра командной строки:

 -dNoOutputFonts

, что приведет к тому, что устройства вывода pdfwrite, ps2write и eps2write "" сгладят "глифы вбазовые «операции маркировки (вместо записи шрифтов в вывод)» .

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

 gs -o somepdf-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite somepdf.pdf

Предостережения: Я проверил это с несколькими входными файлами, используя самоскомпилированный Ghostscript, основанный на текущих источниках Git.Это работало безупречно в каждом случае.

3 голосов
/ 02 февраля 2012

возможный способ создать неисключаемый векторный pdf из поискового вектора pdf:

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

    pdftk file.pdf burst

  2. конвертировать любую отдельную страницу в SVG с помощью

    pdftocairo

содержится в утилитах poppler

for f in *.pdf; do pdftocairo -svg $f; done

3. удалить ALL pdf в папке

4. затем с батикрастеризатором

переконвертировать ALL svg в pdf (на этот раз полученные pdf будут сохранены в векторе, но без возможности поиска)

java -jar ./batik-rasterizer.jar -m application/pdf *.svg

последний шаг : объединить все полученные одностраничные страницы в один многостраничный файл PDF

pdftk *.pdf cat output out.pdf
0 голосов
/ 03 февраля 2012

Я думаю, что преобразование в изображение, такое как jpg, - это путь, возможно, стоит преобразовать его в am image, оптимизировать / уменьшить размер изображений и затем создать PDF с этими файлами?

...