Вы можете использовать одну командную строку с двумя командами (gs
, convert
), соединенными через канал, если первая команда может записать свой вывод в стандартный вывод, а вторая может прочитать свой ввод из стандартного ввода. *
- К счастью, gs может написать на стандартный вывод (
... -o %stdout ...
).
- К счастью, конвертировать можно читать из стандартного ввода (
convert -background transparent - output.png
).
Проблема решена:
- GS используется для обработки альфа-канала специального изображения,
- преобразование, используемое для создания прозрачного фона,
- канал, используемый для предотвращения записи временного файла на диск.
Полное решение:
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