imagemagick разделить большой PDF на PNG - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть PDF-файл, который я хотел бы разделить на отдельные изображения, каждая страница является изображением, для этого я использую следующую команду imagemajick:

convert -density 400 mypdf.pdf out.png

, и он работает нормально, однако я проверил его на первых 5 страницах моего pdf, и это заняло 10 секунд, при такой скорости потребуется около получаса, чтобы разделить мой pdf, что мне кажется странным, учитывая, что я ' Я на самом деле не делаю ничего фантастического, я не поворачиваю изображения и не изменяю их в любом случае, я хотел бы знать, есть ли более быстрый способ сделать это. Спасибо

Кроме того, я хотел бы сохранить качество, я делал это раньше без флага плотности, но качество резко упало.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Если у вас установлен Python, вы должны попробовать PyMuPDF. Это привязка Python для MuPDF, чрезвычайно простая в использовании и чрезвычайно быстрая (в 3 раза быстрее, чем xpdf). Рендеринг PDF-страниц - это бизнес для этого пакета. Используйте такой скрипт:

#----------------------------------------------------------------------------------
import fitz
fname = sys.argv[1]        # get filename from command line
doc = fitz.open(fname)     # open the file
mat = fitz.Matrix(2,2)     # controls resolution: scale factor in x and y direction
for page in doc:
    pix = page.getPixmap(matrix=mat, alpha=False)
    pix.writePNG("p-%i.png" % page.number) # write the page's image
#----------------------------------------------------------------------------------

Еще к «Матрице»: Эта форма масштабирует каждое направление с коэффициентом 2. Таким образом, результирующий PNG становится примерно в 4 раза больше, чем версия по умолчанию в оригинальном размере 100%. Оба измерения можно масштабировать независимо. Возможно также вращение или рендеринг только частей страницы.

Больше к PyMuPDF: Доступен как двоичное колесо для Windows, OSX и всех версий Linux от PyPI. Поэтому установка занимает считанные секунды. Лицензия для части Python - GNU GPL 3, для части MuPDF - GNU AFFERO GPL 3. Так что это открытый исходный код и бесплатная программа. Создание коммерческих продуктов исключено, но вы можете свободно распространять по тем же лицензиям.

0 голосов
/ 25 апреля 2018

рендеринг PDF немного беспорядок.

Лучшей системой, вероятно, является GhostScript, а MuPDF - ее библиотечная форма.Это очень быстро и хорошо масштабируется для больших документов.К сожалению, лицензирование библиотек (AFL) сложно, и вы не можете напрямую связать двоичный файл.

ImageMagick обходит это ограничение, добавляя инструмент командной строки ghostscript, но, конечно, это означает, что рендеринг страницы PDF теперь является многоэтапным процессом: PDF копируется в / tmp,ghostscript выполняется с набором флагов командной строки для вывода документа в файл изображения в / tmp, этот временный файл изображения снова считывается, страница извлекается и, наконец, изображение записывается в выходной PNG.

На моем ноутбуке я вижу:

$ time convert -density 400 nipguide.pdf[8] x.png
real    0m2.598s

Другой популярный рендер PDF poppler .Это вышло из проекта предварительного просмотра документов xpdf, так что это быстро, но действительно очень приятно рендерить в RGB.Он может работать и с большими документами, и это GPL, так что вы не можете ссылаться на него, не став также GPL.

libvips ссылки непосредственно на poppler-glib для рендеринга PDF, так что высохранить несколько копий.Я вижу:

$ time vips copy nipguide.pdf[page=8,dpi=400] x.png
real    0m0.904s

Наконец, есть PDFium .Это библиотека рендеринга PDF от Chrome - это старая программа просмотра PDF от Foxit, довольно грубо вырезанная и превращенная в библиотеку.Он немного медленнее, чем poppler, но у него очень щедрая лицензия, что означает, что вы можете использовать его в ситуациях, когда poppler просто не будет работать.

Есть экспериментальная ветка libvips, которая использует PDFium для рендеринга PDF.С этим я вижу:

$ time vips copy nipguide.pdf[page=8,dpi=400] x.png
real    0m1.152s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...