Быстрая библиотека сплиттеров PDF - PullRequest
6 голосов
/ 03 февраля 2009

pyPdf - отличная библиотека для разделения, объединения PDF-файлов. Я использую его для разделения документов PDF на документы на 1 страницу. pyPdf - это чистый python, который проводит довольно много времени в методе _sweepIndirectReferences () объекта PdfFileWriter при сохранении извлеченной страницы. Мне нужно что-то с лучшей производительностью. Я пытался использовать многопоточность, но так как большая часть времени была потрачена на код Python, не было никакого увеличения скорости из-за GIL (на самом деле он работал медленнее).

Существует ли какая-либо библиотека, написанная на c, которая обеспечивает такую ​​же функциональность? или у кого-нибудь есть хорошая идея о том, как повысить производительность (кроме порождения нового процесса для каждого файла PDF, который я хочу разбить)

Заранее спасибо.

Продолжайте. Ссылки на пару решений для командной строки, которые иногда оказываются быстрее pyPDF:

Я изменил класс pyPDF PdfWriter, чтобы отслеживать, сколько времени было потрачено на метод _sweepIndirectReferences (). Если это было слишком долго (сейчас я использую магическое значение 3 секунды), тогда я возвращаюсь к использованию ghostscript, вызывая его из python.

Спасибо за все ваши ответы. (ссылка на xpdf от codelogic заставила меня искать другой подход)

Ответы [ 4 ]

3 голосов
/ 03 февраля 2009

mbtPdfAsm - это быстрый инструмент командной строки с открытым исходным кодом для обработки PDF.

Xpdf также стоит упомянуть, так как он написан на языке C ++ и распространяется на языке GPL. Исходный код хорошо модульный и позволяет писать инструменты командной строки.

2 голосов
/ 04 февраля 2009

Должен ли это быть питон? Моя библиотека на чистом Perl CAM :: PDF довольно быстро добавляет и удаляет страницы документа PDF. Это экономит место для самого конца, где это возможно.

1 голос
/ 04 февраля 2009

Вы пытались использовать Psyco с pyPdf?

1 голос
/ 03 февраля 2009

pdfLaTex может выполнять много операций с PDF, и очень быстро.

Я использовал его для некоторых довольно сложных наложений. язык TeX действительно чужд программированию, но легко написать скрипт на python, который генерирует необходимый макет LaTex и обрабатывает его.

...