Конвертировать многостраничный PDF в PNG и обратно (Linux) - PullRequest
26 голосов
/ 15 марта 2012

У меня есть много документов PDF, которые я хочу преобразовать в PNG, отредактировать в Gimp, а затем сохранить обратно в многостраничный файл Acrobat.Я заполняю формы и добавляю отсканированную подпись, стараясь не печатать, не подписывать и не сканировать обратно, с возможностью ввода информации, которую мне нужно ввести.

Я пытался использовать Imagemagick дляконвертировать в png файлы, которые, кажется, работают нормально.Я использую команду convert -quality 100 -density 300x300 multipage.pdf single%d.png
(я не совсем уверен, подходит ли параметр качества для png).

Но у меня проблемы с сохранением обратно в PDF.Некоторые файлы имеют неправильный размер страницы, и я попробовал каждую команду и процедуру, которую смог найти, но всегда есть несколько нечетных размеров.Разрешение, кажется, меняется, так что оно выглядит хорошо при определенном уровне масштабирования, но либо несколько страниц имеют ширину около 2 ", либо они имеют размер 8,5x11, но остальные имеют ширину около 35".Я попытался убедиться, что у Gimp правильный размер и разрешение, и сохранить разрешение в файле, но это не имеет значения.

Команда, которую я использую для сохранения файлов: convert -page letter -adjoin single*.png multipage.pdf Я пробовал другие параметры, но ни один из них не имел значения.

Если у кого-то есть какие-либо идеи или альтернативы, я был бы признателен.

Ответы [ 2 ]

32 голосов
/ 21 августа 2012

«Я не совсем уверен, подходит ли параметр качества для PNG.»

Для вывода PNG настройка -quality очень отличаетсяПараметр качества JPEG (который представляет собой целое число от 0 до 100).

Для PNG он состоит из двух отдельных цифр:

  • Первая цифра(десятки) - (в основном) уровень сжатия zlib , и он может изменяться от 0 до 9.
    (Однако настройка 0 имеет особое значение:когда вы используете его, вы получите сжатие Хаффмана, а не уровень сжатия zlib 0. Это часто лучше ... Странно, но верно.)

  • Вторая цифра - Тип фильтра кодирования данных PNG (до его сжатия):

    • 0 - нет,
    • 1 - это "sub",
    • 2 - это«вверх»,
    • 3 - «средний»,
    • 4 - «Паэт», а
    • 5 - «адаптивный».

На практике это означает:

  • Для иллюстраций со сплошными цветными последовательностями обычно наиболее подходящим является фильтр «none» (-quality 00).
  • Для фотографий природных ландшафтов обычно лучше использовать «адаптивную» фильтрацию (-quality 05).

"У меня проблемы с сохранением в PDF.Некоторые файлы имеют неправильный размер страницы, и я пробовал каждую команду и процедуру, которую я могу найти [...], но либо несколько страниц имеют ширину около 2 ", либо они имеют размер 8,5x11, но остальные35 "в ширину".

Не имея ваших PNG-файлов, я создал несколько простых файлов с разными размерами для проверки разных команд (поскольку я сам больше не был уверен).Действительно, тот, который вы использовали:

convert -page letter -adjoin single*.png multipage.pdf

действительно создает все страницы PDF с (одинаковым) размером букв, но он помещает мой образец PNG (разных размеров) всегда в нижний левый угол страницы PDF.(Если PNG превышает размер страницы PDF, он уменьшает их размер, чтобы подогнать их по размеру, но не увеличивает PNG меньшего размера, чтобы заполнить доступное пространство страницы.)

Следующая модификация командыпоместит PNG в центр каждой страницы PDF:

convert           \
  -page letter    \
  -adjoin         \
   single*.png    \
  -gravity center \
   multipage.pdf

Если это все еще недостаточно для вас, вы можете применить (возможно, непропорционально!) масштабирование, чтобы почти заполнить буквуr область, добавив параметр -scale '590!x770!' (это оставит границу в 11 пунктов на каждом краю страницы):

convert              \
  -page letter       \
  -adjoin            \
   single*.png       \
  -gravity center    \
  -scale '590!x770!' \
   multipage.pdf

Чтобы убрать дополнительную границу, используйте -scale '612!x792!'.- Если вы хотите, чтобы при сохранении соотношения сторон PNG происходило масштабирование только вверх, используйте -scale '590<x770<':

convert              \
  -page letter       \
  -adjoin            \
   single*.png       \
  -gravity center    \
  -scale '590<x770<' \
   multipage.pdf 
6 голосов
/ 20 августа 2012

Почему бы просто не использовать Xournal ? Это то, что я использую для аннотирования PDF-файлов

...