2009-03-23 14 views
5

Sto usando il toolkit reportlab in Python per generare alcuni report in formato PDF. Voglio utilizzare alcune parti predefinite di documenti già pubblicati in formato PDF da includere nel file PDF generato. È possibile (e come) realizzare questo in reportlab o nella libreria python?Come includere la pagina in PDF nel documento PDF in Python

So di poter utilizzare altri strumenti come PDF Toolkit (pdftk) ma sto cercando una soluzione basata su Python.

risposta

6

Attualmente sto utilizzando PyPDF per leggere, scrivere e combinare PDF e ReportLab esistenti per generare nuovi contenuti. L'uso dei due pacchetti sembrava funzionare meglio di ogni singolo pacchetto che ero in grado di trovare.

+0

Sì, mi piace questo pacchetto. Il primo esempio è quello che voglio, ci proverò. – Jiri

1

C'è un add-on per ReportLab — PageCatcher.

+0

Ok, questo sembra essere lo strumento giusto. Sfortunatamente è nella versione commerciale del toolkit reportlab e non posso usarlo direttamente - sto usando la versione opensource. E non c'è un prezzo: sembra che debba negoziare un prezzo con reportlab prima del download. – Jiri

2

Se si desidera posizionare pagine PDF esistenti nei documenti Reportlab, è consigliabile pdfrw. A differenza di PageCatcher è gratuito.

L'ho usato per diversi progetti in cui ho bisogno di aggiungere codici a barre ecc. A documenti esistenti e funziona molto bene. Ci sono un paio di examples nella pagina del progetto su come usarlo con Reportlab.

Un paio di cose da notare però:

Se l'origine PDF contiene errori (a causa del programma di origine a seguito del PDF spec imperfettamente, per esempio), pdfrw potrebbe non riuscire anche se qualcosa di simile a Adobe Reader non ha problemi apparenti leggendo il PDF. pdfrw non è attualmente molto fault tolerant.

Inoltre, pdfrw funziona in modo completamente indipendente dal contenuto effettivo della pagina PDF che si sta inserendo. Ad esempio, non sarebbe possibile utilizzare pdfrw per ispezionare una pagina per vedere se contiene una determinata stringa di testo nell'angolo in basso a destra. Tuttavia, se lo non è il necessario fare qualcosa del genere, si dovrebbe andare bene.

Problemi correlati