Advertisement
  1. Code
  2. Python

Come lavorare con i documenti PDF usando Python

by
Read Time:5 minsLanguages:

Italian (Italiano) translation by Patrizio Bellan (you can also view the original English article)

Ammiro davvero tanto i file Portable Document Format (PDF). Ricordo i giorni in cui quei files risolvevano ogni problema di formattazione durante lo scambio di files, a causa di differenze  nelle versioni di Word o altri problemi/ragioni

Stiamo parlando di Python, no? Siamo interessati a come lavorare con i documenti PDF. Bene, sai benissimo quanto è semplice, specialmente se hai usato prima Python con i file di testo (txt). Ma qui è un pochino differente. I Documenti pdf sono files binari molto complessi rispetto ai file plaintext, specialmente perchè contengono differenti tipologie di fonts, colori, ecc...

Questo non vuol dire che sarà difficile lavorare con i documenti PDF usando Python; sarà semplicissimo grazie all'uso di moduli esterni.

PyPDF2

Come menzionato sopra, la chiave è usare un modulo esterno. Il modulo usato in questo tutorial sarà PyPDF2 . Dato che è un modulo esterno, il primo passo è installare il modulo. per fare ciò, useremo pip, cioè (estratto da Wikipedia):

il sistema di gestione dei pacchetti, usato per installare e gestire packages scritti in Python. Molti pacchetti si trovano nel Python Package Index (PyPI).

Puoi seguire i passi indicati nel Python Packaging User Guide per installare pip, ma se hai Python 2.7.9 ( o maggiore), o Python 3.4 (o maggiore), hai già pip installato!

PyPDF2 può essere installato semplicemente, scrivendo il seguente comando nel prompt dei comandi (o in Terminal sù Mac OS X)

pip install pypdf2

Ottimo! Adesso che hai PyPDF2 installato, sei pronto a iniziare a giocare con i documenti PDF

Leggere un documento PDF

Il file di esempio che useremo in questo tutorial è sample.pdf Puoi scaricare il file necessario per il tutorial, oppure puoi usare qualsiasi documento PDF tu voglia.

Iniziamo andando a leggere il documento PDF. Prima di usare PyPDF2, abbiamo bisogno di importare il modulo come segue:

import pypdf2

Dopo aver importato il modulo, useremo la classe PdfFileReader Lo script che leggerà il documento PDF apparirà come segue:

Altre operazioni sui documenti PDF

Dopo aver letto il documento PDF, possiamo effettuare differenti operazioni sul documento, come vederemo in questa sezione.

Numero di Pagine

Contiamo il numero di pagine in sample.pdf. Per fare questo usiamo il metodo getNumPages() :

In questo caso, il metodo ritornerà il valore 1

Numero di Pagina

Andiamo a leggere i numeri di pagina di alcune pagine all'interno del documento PDF. Usiamo il metodo getPageNumber(page),  notate che dobbiamo passare un oggetto di tipo page al metodo. Per ottenere un oggetto page, invocheremo il metodo getPage(number), dove number rappresenta il numero di pagina nel documento PDF. L'argomento number parte con il valore 0.

Bene, lo so che usando getPage(number) conosci già il numero di pagine, ma questo è fatto per illustrare come usare questi metodi insieme. Questo è dimostrato nel seguente script:

Andiamo avanti, prova lo script. Quale output hai ottenuto?

Sappiamo che in sample.pdf (il file che usiamo per effettuare le prove), ha solo una pagina (number 0). Se passassimo il numero 1 come numero di pagina a getPage(number)? In questo caso otterrai il seguente errore:

Questo perchè la pagina non è disponibile, dato che abbiamo usato un numero di pagina fuori dal range (delle pagine esistenti).

Modalità Pagina

Le pagine PDF contengono differenti modalità:

/UseNone Non mostrarere outlines o i pannelli thumbnails 
/UseOutlines
Mostra il pannello outlines (ossia i segnalibri)
/UseThumbs
Mostra il pannello thumbnails della pagina  
/FullScreen
Visualizza a tutto schermo
/UseOC
Mostra il pannello Optional Content Group (OCG) 
/UseAttachments
Mostra il pannello degli allegati

Per scoprire la modalità della nostra pagina, possiamo usare il seguente script:

Nel caso in cui il nostro documento PDF (sample.pdf), ritorna il valore None, questo ci specifica che la modalità della pagina non è disponibile. Se vuoi specificare la modalità della pagina, puoi usare il metodo setPageMode(mode), dove mode è uno delle possibilità elencate nella tabella sopra.

Estrarre il testo

Abbiamo dato uno sguardo intorno al file, adesso andiamo a guardare al suo interno. Il metodo extractText() sarà il nostro amico per questo compito.

Permettimi di mostrarti l'intero script, all'opposto di quello che ti ho mostrato prima, mostrandoti solo la parte di script necessaria per effettuare l'operazione. Lo script per estrarre il testo da un documento PDF è il seguente:

Sono rimasto sorpreso quando ho ottenuto il seguente output con sample.pdf :

Questo è un errore di codifica del font, poichè il carattere è stato mappato sotto altri valori. Qualche volta capita che ci siano problemi con i documenti PDF, può darsi che il documento PDF non contenga i dati necessari per immagazzinare il contenuto.

Ho provato con un altro file, questo era un mio file: paper.pdf Andiamo avanti e sostituiamo nel codice sample.pdf con paper.pdf. L'output ottenuto in questo caso è:

Dov'è il resto del testo della pagina? Attualmente il metodo extractText () non sembra lavorare in modo perfetto, ha bisogno di alcune migliorie. Ma lo scopo di questo tutorial è di mostrarti come lavorare con i files PDF usando Python, i miglioramenti sono da apportare a livello di dominio.

Conclusioni

Come abbiamo potuto vedere, Python rende semplice lavorare con i documenti PDF. In questo tutorial abbiamo dato solo uno sguardo alla superficie di questo argomento, puoi trovare maggiori dettagli e operazioni da eseguire sui tuoi documeti PDF nella pagina di documentazione di PyPDF2.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.