Tutti voi dovete avere familiarità con cosa sono i PDF. In effetti, sono uno dei media digitali più importanti e ampiamente utilizzati. PDF sta per Formato documento portatile . Utilizza .PDF estensione. Viene utilizzato per presentare e scambiare documenti in modo affidabile, indipendentemente da software, hardware o sistema operativo.
Inventato da Adobe , PDF è ora uno standard aperto gestito dall'Organizzazione internazionale per la standardizzazione (ISO). I PDF possono contenere collegamenti e pulsanti, campi modulo, audio, video e logica aziendale.
In questo articolo impareremo come possiamo eseguire varie operazioni come:
- Estrazione di testo da PDF
- Rotazione delle pagine PDF
- Unione di PDF
- Dividere PDF
- Aggiunta di filigrana alle pagine PDF
Installazione: Utilizzando semplici script Python!
Utilizzeremo un modulo di terze parti, pypdf.
pypdf è una libreria Python creata come toolkit PDF. È in grado di:
- Estrazione delle informazioni del documento (titolo, autore, …)
- Dividere i documenti pagina per pagina
- Unire i documenti pagina per pagina
- Ritaglio di pagine
- Unione di più pagine in un'unica pagina
- Crittografia e decrittografia di file PDF
- e altro ancora!
Per installare pypdf, esegui il seguente comando dalla riga di comando:
pip install pypdf>
Il nome di questo modulo fa distinzione tra maiuscole e minuscole, quindi assicurati che il file E è minuscolo e tutto il resto è maiuscolo. Sono disponibili tutto il codice e i file PDF utilizzati in questo tutorial/articolo Qui .
1. Estrazione del testo dal file PDF
stringa intera
Pitone
# importing required classes> from> pypdf>import> PdfReader> > # creating a pdf reader object> reader>=> PdfReader(>'example.pdf'>)> > # printing number of pages in pdf file> print>(>len>(reader.pages))> > # creating a page object> page>=> reader.pages[>0>]> > # extracting text from page> print>(page.extract_text())> |
>
>
L'output del programma sopra è simile al seguente:
20 PythonBasics S.R.Doty August27,2008 Contents 1Preliminaries 4 1.1WhatisPython?................................... ..4 1.2Installationanddocumentation.................... .........4 [and some more lines...]>
Proviamo a comprendere il codice sopra in blocchi:
reader = PdfReader('example.pdf')> - Qui creiamo un oggetto di PdfReader classe del modulo pypdf e passa il percorso al file PDF e ottieni un oggetto lettore PDF.
print(len(reader.pages))>
- pagine La proprietà fornisce il numero di pagine nel file PDF. Ad esempio, nel nostro caso è 20 (vedi prima riga di output).
pageObj = reader.pages[0]>
- Ora creiamo un oggetto di PageObject classe del modulo pypdf. L'oggetto lettore PDF ha una funzione pagine[] che prende come argomento il numero di pagina (a partire dall'indice 0) e restituisce l'oggetto pagina.
print(pageObj.extract_text())>
- L'oggetto della pagina ha una funzione estrai_testo() per estrarre il testo dalla pagina PDF.
Nota: Sebbene i file PDF siano ottimi per disporre il testo in un modo che sia facile da stampare e leggere, non sono semplici da analizzare per il software in testo normale. Pertanto, pypdf potrebbe commettere errori durante l'estrazione del testo da un PDF e potrebbe persino non essere in grado di aprire alcuni PDF. Sfortunatamente non puoi fare molto al riguardo. pypdf potrebbe semplicemente non essere in grado di funzionare con alcuni dei tuoi particolari file PDF.
2. Rotazione delle pagine PDF
Pitone
diagramma uml java
# importing the required classes> from> pypdf>import> PdfReader, PdfWriter> > def> PDFrotate(origFileName, newFileName, rotation):> > ># creating a pdf Reader object> >reader>=> PdfReader(origFileName)> > ># creating a pdf writer object for new pdf> >writer>=> PdfWriter()> > ># rotating each page> >for> page>in> range>(>len>(reader.pages)):> > ># creating rotated page object> >pageObj>=> reader.pages[page]> >pageObj.rotate(rotation)> > ># adding rotated page object to pdf writer> >pdfWriter.add_page(pageObj)> > ># new pdf file object> >newFile>=> open>(newFileName,>'wb'>)> > ># writing rotated pages to new file> >pdfWriter.write(newFile)> > ># closing the new pdf file object> >newFile.close()> > > def> main():> > ># original pdf file name> >origFileName>=> 'example.pdf'> > ># new pdf file name> >newFileName>=> 'rotated_example.pdf'> > ># rotation angle> >rotation>=> 270> > ># calling the PDFrotate function> >PDFrotate(origFileName, newFileName, rotation)> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()> |
>
>
Qui puoi vedere come si presenta la prima pagina di esempio_ruotato.pdf appare come (immagine a destra) dopo la rotazione:

Alcuni punti importanti relativi al codice di cui sopra:
- Per la rotazione, creiamo prima un oggetto lettore PDF del PDF originale.
writer = PdfWriter()>
- Le pagine ruotate verranno scritte in un nuovo PDF. Per scrivere su PDF, utilizziamo l'oggetto of PdfWriter classe del modulo pypdf.
for page in range(len(pdfReader.pages)): pageObj = pdfReader.pages[page] pageObj.rotate(rotation) pdfWriter.add_page(pageObj)>
- Ora iteriamo ogni pagina del PDF originale. Otteniamo l'oggetto della pagina da .pagine[] metodo della classe del lettore PDF. Ora ruotiamo la pagina di ruotare() metodo della classe dell'oggetto della pagina. Quindi, aggiungiamo una pagina all'oggetto del writer PDF utilizzando aggiunta() metodo della classe di scrittura PDF passando l'oggetto pagina ruotata.
newFile = open(newFileName, 'wb') pdfWriter.write(newFile) newFile.close()>
- Ora dobbiamo scrivere le pagine PDF in un nuovo file PDF. Innanzitutto, apriamo il nuovo oggetto file e scriviamo le pagine PDF utilizzando scrivere() metodo dell'oggetto scrittore PDF. Infine, chiudiamo l'oggetto file PDF originale e il nuovo oggetto file.
3. Unione di file PDF
Pitone
# importing required modules> from> pypdf>import> PdfMerger> > > def> PDFmerge(pdfs, output):> ># creating pdf file merger object> >pdfMerger>=> PdfMerger()> > ># appending pdfs one by one> >for> pdf>in> pdfs:> >pdfMerger.append(pdf)> > ># writing combined pdf to output pdf file> >with>open>(output,>'wb'>) as f:> >pdfMerger.write(f)> > > def> main():> ># pdf files to merge> >pdfs>=> [>'example.pdf'>,>'rotated_example.pdf'>]> > ># output pdf file name> >output>=> 'combined_example.pdf'> > ># calling pdf merge function> >PDFmerge(pdfs>=>pdfs, output>=>output)> > > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()> |
utenti dell'elenco mysql
>
>
L'output del programma sopra è un PDF combinato, combinato_esempio.pdf , ottenuto mediante fusione esempio.pdf E esempio_ruotato.pdf .
- Diamo uno sguardo agli aspetti importanti di questo programma:
pdfMerger = PdfMerger()>
- Per l'unione, utilizziamo una classe precostruita, PdfMerger del modulo pypdf.
Qui creiamo un oggetto pdfFusione della classe di fusione PDF
for pdf in pdfs: pdfmerger.append(open(focus, 'rb'))>
- Ora aggiungiamo l'oggetto file di ciascun oggetto di fusione da PDF a PDF utilizzando il file aggiungere() metodo.
with open(output, 'wb') as f: pdfMerger.write(f)>
- Infine, scriviamo le pagine PDF nel file PDF di output utilizzando scrivere metodo dell'oggetto fusione PDF.
4. Divisione del file PDF
Pitone
# importing the required modules> from> pypdf>import> PdfReader, PdfWriter> > def> PDFsplit(pdf, splits):> ># creating pdf reader object> >reader>=> PdfReader(pdf)> > ># starting index of first slice> >start>=> 0> > ># starting index of last slice> >end>=> splits[>0>]> > > >for> i>in> range>(>len>(splits)>+>1>):> ># creating pdf writer object for (i+1)th split> >writer>=> PdfWriter()> > ># output pdf file name> >outputpdf>=> pdf.split(>'.pdf'>)[>0>]>+> str>(i)>+> '.pdf'> > ># adding pages to pdf writer object> >for> page>in> range>(start,end):> >writer.add_page(reader.pages[page])> > ># writing split pdf pages to pdf file> >with>open>(outputpdf,>'wb'>) as f:> >writer.write(f)> > ># interchanging page split start position for next split> >start>=> end> >try>:> ># setting split end position for next split> >end>=> splits[i>+>1>]> >except> IndexError:> ># setting split end position for last split> >end>=> len>(reader.pages)> > > def> main():> ># pdf file to split> >pdf>=> 'example.pdf'> > ># split page positions> >splits>=> [>2>,>4>]> > ># calling PDFsplit function to split pdf> >PDFsplit(pdf, splits)> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()> |
>
>
L'output sarà composto da tre nuovi file PDF divisione 1 (pagina 0,1), divisione 2 (pagina 2,3), divisione 3 (pagina 4-fine) .
Nessuna nuova funzione o classe è stata utilizzata nel programma Python sopra. Utilizzando semplici logiche e iterazioni, abbiamo creato le suddivisioni dei PDF passati in base all'elenco passato divide .
5. Aggiunta di filigrana alle pagine PDF
Pitone
# importing the required modules> from> pypdf>import> PdfReader> > def> add_watermark(wmFile, pageObj):> ># creating pdf reader object of watermark pdf file> >reader>=> PdfReader(wmFileObj)> > ># merging watermark pdf's first page with passed page object.> >pageObj.merge_page(reader.pages[>0>])> > ># returning watermarked page object> >return> pageObj> > def> main():> ># watermark pdf file name> >mywatermark>=> 'watermark.pdf'> > ># original pdf file name> >origFileName>=> 'example.pdf'> > ># new pdf file name> >newFileName>=> 'watermarked_example.pdf'> > ># creating pdf File object of original pdf> >pdfFileObj>=> open>(origFileName,>'rb'>)> > ># creating a pdf Reader object> >reader>=> PdfReader(pdfFileObj)> > ># creating a pdf writer object for new pdf> >writer>=> PdfWriter()> > ># adding watermark to each page> >for> page>in> range>(>len>(reader.pages)):> ># creating watermarked page object> >wmpageObj>=> add_watermark(mywatermark, reader.pages[page])> > ># adding watermarked page object to pdf writer> >writer.add_page(wmpageObj)> > ># new pdf file object> >newFile>=> open>(newFileName,>'wb'>)> > ># writing watermarked pages to new file> >writer.write(newFile)> > ># closing the new pdf file object> >newFile.close()> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()> |
>
>
MB in GB
Ecco come appare la prima pagina del file PDF originale (a sinistra) e con filigrana (a destra):

- Tutto il processo è lo stesso dell'esempio di rotazione della pagina. L'unica differenza è:
wmpageObj = add_watermark(mywatermark, pdfReader.pages[page])>
- L'oggetto pagina viene convertito in oggetto pagina con filigrana utilizzando aggiungi_filigrana() funzione.
- Cerchiamo di capire aggiungi_filigrana() funzione:
reader = PdfReader(wmFile) pageObj.merge_page(reader.pages[0]) wmFileObj.close() return pageObj>
- Innanzitutto, creiamo un oggetto lettore PDF di filigrana.pdf . Per l'oggetto della pagina passato, utilizziamo unisci_pagina() funzione e passare l'oggetto pagina della prima pagina dell'oggetto lettore PDF filigrana. Ciò sovrapporrà la filigrana all'oggetto della pagina passata.
E qui arriviamo alla fine di questo lungo tutorial su come lavorare con i file PDF in Python.
Ora puoi creare facilmente il tuo gestore PDF!
Riferimenti:
- https://automatetheboringstuff.com/chapter13/
- https://pypi.org/project/pypdf/
Se ti piace techcodeview.com e desideri contribuire, puoi anche scrivere un articolo utilizzando write.techcodeview.com o inviare per posta il tuo articolo a [email protected]
Per favore scrivi commenti se trovi qualcosa di sbagliato o se desideri condividere maggiori informazioni sull'argomento discusso sopra.