2009-02-03 16 views
5

pyPdf est une bibliothèque géniale permettant de fusionner et de fusionner des fichiers PDF. Je l'utilise pour diviser des documents PDF en documents d'une page. pyPdf est pure python et passe beaucoup de temps dans la méthode _sweepIndirectReferences() de l'objet PdfFileWriter lors de l'enregistrement de la page extraite. J'ai besoin de quelque chose avec de meilleures performances. J'ai essayé d'utiliser le multi-threading mais comme la plupart du temps on passe en code python, il n'y a pas eu de gain de vitesse à cause du GIL (il était plus lent).Bibliothèque de séparateurs Fast PDF

Y a-t-il une bibliothèque écrite en c qui offre la même fonctionnalité? ou est-ce que quelqu'un a une bonne idée sur la façon d'améliorer la performance (autre que de générer un nouveau processus pour chaque fichier pdf que je veux diviser)

Merci d'avance.

Suivi. Liens vers quelques solutions de ligne de commande, qui peut se révéler parfois plus vite que pypdf:

I modifié pypdf classe PdfWriter de garder une trace de combien de temps a été passé sur la méthode _sweepIndirectReferences(). Si cela a été trop long (en ce moment j'utilise la valeur magique de 3 secondes) alors je reviens à utiliser ghostscript en faisant un appel à partir de python.

Merci pour toutes vos réponses. (la référence de xpdf de codelogic est celle qui m'a fait chercher une approche différente)

Répondre

3

mbtPdfAsm est un outil de ligne de commande rapide et open source pour le traitement PDF.

Xpdf vaut aussi la peine d'être mentionné car c'est GPL et écrit en C++. Le code source est bien modularisé et permet d'écrire des outils en ligne de commande.

+0

Je dois démonter le pdf. Si je comprends bien mbtPdfAsm assemble pdfs. – Nathan

+0

Il peut être utilisé pour assembler et désassembler les fichiers PDF. – codelogic

1

pdfLaTex peut faire beaucoup de gestion de pdf et est très rapide. Je l'ai utilisé pour certains worflows d'imposition assez complexes. le langage TeX est vraiment étranger à la programmation, mais il est facile d'écrire un script python qui génère la mise en page LaTex nécessaire et la traite.

1

Avez-vous essayé d'utiliser Psyco avec pyPdf?

+0

psyco n'est pas disponible sur mon installation 64bit ubuntu – Nathan

2

Faut-il que ce soit python? Ma bibliothèque pure-Perl CAM::PDF est assez rapide pour ajouter et supprimer des pages de document PDF. Il économise le balayage pour la toute fin, si possible.