Как использовать высокоуровневый интерфейс Python Ghostscript для преобразования файла .pdf в несколько файлов .png? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь преобразовать файл .pdf в несколько файлов .png, используя Ghostscript в Python. Другие ответы здесь были довольно старыми, поэтому этот новый поток.

Следующий код был приведен в качестве примера на pypi.org интерфейса «высокого уровня», и я пытаюсь смоделировать свой код после примера код ниже.

import sys
import locale
import ghostscript

args = [
    "ps2pdf", # actual value doesn't matter
    "-dNOPAUSE", "-dBATCH", "-dSAFER",
    "-sDEVICE=pdfwrite",
    "-sOutputFile=" + sys.argv[1],
    "-c", ".setpdfwrite",
    "-f",  sys.argv[2]
    ]

# arguments have to be bytes, encode them
encoding = locale.getpreferredencoding()
args = [a.encode(encoding) for a in args]

ghostscript.Ghostscript(*args)

Может кто-нибудь объяснить, что делает этот код? И можно ли это как-то использовать для преобразования .pdf в .png файлы?

Я новичок в этом и действительно запутался. Большое спасибо!

1 Ответ

0 голосов
/ 27 апреля 2020

Это вызывает Ghostscript, очевидно. Исходя из аргументов, что он не порождает процесс, он связан (динамически или статически) с библиотекой Ghostscript.

Аргументы являются аргументами Ghostscript. Они описаны в документации Ghostscript, вы можете найти ее в сети здесь . Поскольку он имитирует интерфейс командной строки, где первый аргумент является вызывающей программой, первый аргумент здесь не имеет смысла и может быть любым, чем вы хотите (как говорится в комментарии).

Следующие три аргумента включают SAFER ( который предотвращает некоторые потенциально опасные операции и в настоящее время является по умолчанию в любом случае), устанавливает NOPAUSE таким образом, чтобы все inptu обрабатывалось без пауз между страницами, и BATCH, чтобы при завершении Ghostscript завершал работу вместо возврата из интерактивного приглашения.

Затем он выбирает устройство. В Ghostscript (из-за языка PostScript) устройства - это то, что на самом деле выводится. В этом случае выбранное устройство - это устройство pdfwrite, которое выводит PDF.

Тогда есть OutputFile, вы, вероятно, можете догадаться, что это имя (и путь) файла, в который должна быть записана oputptu.

Следующие 3 аргумента; «- c .setpdfrite -f», откровенно говоря, архаи c и бессмысленны. Когда-то они были рекомендованы при использовании устройства pdfwrite (и только устройство pdfwrite), но в настоящее время они не имеют никакого полезного эффекта.

Самым последним аргументом, конечно же, является входной файл.

Конечно, вы можете использовать Ghostscript для рендеринга PDF-файлов в PNG. Вы хотите использовать одно из устройств PNG, есть несколько в зависимости от того, какую глубину цвета вы хотите поддерживать. Если у вас нет каких-то незнакомых требований, просто используйте png16m. Если ваш входной файл содержит более одной страницы, вы '' хотите настроить OutputFile на использование% d, чтобы он записывал один файл на страницу.

Более подробную информацию обо всем этом, конечно, можно найти в документация.

...