Pergunta

pyPdf é uma grande biblioteca para dividir, arquivos PDF de mesclagem. Eu estou usando-o para dividir documentos PDF em 1 documentos de página. pyPdf é pura python e passa bastante tempo nos _sweepIndirectReferences () método do objeto PdfFileWriter ao salvar a página extraído. Eu preciso de algo com melhor desempenho. Eu tentei usar multi-threading, mas desde que a maior parte do tempo é gasto no código python não houve ganho de velocidade por causa do GIL (ele realmente correu mais lento).

Existe alguma biblioteca escrita em C que oferece a mesma funcionalidade? Ou alguém tem uma boa idéia sobre como melhorar o desempenho (que não gerando um novo processo para cada arquivo pdf que eu quero split)

Agradecemos antecipadamente.

Siga-se. Links para um par de soluções de linha de comando, que podem revelar-se por vezes mais rápido do que pyPdf:

Eu modifiquei classe pyPdf PdfWriter para manter o controle de quanto tempo foi gasto com os _sweepIndirectReferences () método. Se ele tem sido muito longo (agora eu uso o valor mágico de 3 segundos), então eu voltar a usar ghostscript fazendo uma chamada para ele a partir python.

Obrigado por todas as suas respostas. (Referência xpdf de codelogic é o que me fez olhar para uma abordagem diferente)

Foi útil?

Solução

mbtPdfAsm é um jejum, ferramenta de linha de comando de código aberto para PDF processamento.

Xpdf é também vale a pena mencionar, uma vez que o GPL e escrito em C ++. O código-fonte é bem modularizado e permite escrever ferramentas de linha de comando.

Outras dicas

Tem que ser python? Minha biblioteca de Perl puro CAM :: PDF é bastante rápido em acrescentar e excluir PDF páginas do documento. Ele salva o varrendo para o fim, sempre que possível.

PDFLaTeX pode fazer um monte de gestão PDF e é muito rápido.

Eu usei-o para alguns worflows imposição bastante complexas. a linguagem TeX é realmente estranho a programação, mas é fácil escrever um script Python que gera o layout LaTex necessária e processos-lo.

Você já tentou usar Psyco com pyPdf?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top