Преобразование PDF к PNG

Если вас беспокоит безопасность, используйте cordova-plugin-secure-storage

76
задан comecme 9 December 2016 в 18:30
поделиться

2 ответа

Вы можете использовать одну командную строку с двумя командами (gs, convert), соединенными через трубу, если первая команда может записывать свой вывод в stdout, а вторая может читать свой ввод из stdin.

  1. К счастью, gs может писать в stdout (... -o %stdout ... ).
  2. К счастью, convert может читать из stdout (convert -background transparent - output.png).

Проблема решена:

  • GS используется для работы с альфа-каналом специального изображения,
  • convert используется для создания прозрачного фона,
  • pipe используется для того, чтобы не записывать временный файл на диск.

Полное решение:

gs -sDEVICE=pngalpha       \
   -o %stdout              \
   -r144 cover.pdf         \
   |                       \
convert                    \
   -background transparent \
   -                       \
    cover.png

Обновление

Если вы хотите иметь отдельный PNG для каждой страницы PDF, вы можете использовать синтаксис %d:

gs -sDEVICE=pngalpha -o file-%03d.png -r144 cover.pdf

Это создаст PNG файлы с именами page-000. png, page-001.png, ... (Обратите внимание, что %d-счет ведется по нулям -- file-000.png соответствует странице 1 PDF, 001 - странице 2....

Или, если вы хотите сохранить прозрачный фон, для 100-страничного PDF, сделайте

for i in {1..100}; do        \
                             \
  gs -sDEVICE=pngalpha       \
     -dFirstPage="${i}"      \
     -dLastPage="${i}"       \
     -o %stdout              \
     -r144 input.pdf         \
     |                       \
  convert                    \
     -background transparent \
     -                       \
      page-${i}.png ;        \
                             \
done
64
ответ дан 24 November 2019 в 11:19
поделиться

Вот немецкое обсуждение о проблеме как это для файлов SVG, где оно решено при помощи

convert -background transparent

, Возможно, это работает на Вас, также.

2
ответ дан schnaader 24 November 2019 в 11:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: