Tutti voi dovete avere familiarità con cosa sono i PDF. Infatti 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 dall'hardware del software o dal 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 del 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 pypdf di terze parti.
pypdf è una libreria Python creata come toolkit PDF. È in grado di:
- Estrazione delle informazioni sul 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 pypdfIl 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 .
Java è l'istanza di
1. Estrazione del testo dal file PDF
Python# 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
August272008
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.
suite di strumenti primaverili
2. Rotazione delle pagine PDF
# 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)): pageObj = reader.pages[page] pageObj.rotate(rotation) # Add the rotated page object to the PDF writer writer.add_page(pageObj) # Write the rotated pages to the new PDF file with open(newFileName 'wb') as newFile: writer.write(newFile) 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:

salvare da
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)
writer.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 scrittore PDF utilizzando aggiungere() metodo della classe di scrittura PDF passando l'oggetto pagina ruotata.
newFile = open(newFileName 'wb')
writer.write(newFile)
newFile.close()
- Ora dobbiamo scrivere le pagine PDF in un nuovo file PDF. Per prima cosa 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
Python# importing required modules from pypdf import PdfWriter def PDFmerge(pdfs output): # creating pdf file writer object pdfWriter = PdfWriter() # appending pdfs one by one for pdf in pdfs: pdfWriter.append(pdf) # writing combined pdf to output pdf file with open(output 'wb') as f: pdfWriter.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()
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:
pdfWriter = PdfWriter()- Per la fusione utilizziamo una classe precostruita PdfWriter del modulo pypdf.
Qui creiamo un oggetto pdfwriter del corso di scrittura PDF
# appending pdfs one by one
for pdf in pdfs:
pdfWriter.append(pdf)
- Ora aggiungiamo l'oggetto file di ciascun oggetto di scrittura da PDF a PDF utilizzando il file aggiungere() metodo.
# writing combined pdf to output pdf file
with open(output 'wb') as f:
pdfWriter.write(f)
- Infine scriviamo le pagine PDF nel file PDF di output utilizzando scrivere metodo dell'oggetto scrittore PDF.
4. Divisione del file PDF
Python# 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(startend): 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 = [24] # 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 diviso 1 (pagina 01) diviso 2 (pagina 23) diviso 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 si divide .
come rinominare una directory linux
5. Aggiunta di filigrana alle pagine PDF
Python# importing the required modules from pypdf import PdfReader PdfWriter def add_watermark(wmFile pageObj): # creating pdf reader object of watermark pdf file reader = PdfReader(wmFile) # 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) # writing watermarked pages to new file with open(newFileName 'wb') as newFile: writer.write(newFile) # closing the original pdf file object pdfFileObj.close() if __name__ == '__main__': # calling the main function main()
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])
return pageObj
- Innanzitutto creiamo un oggetto lettore PDF di filigrana.pdf . Usiamo l'oggetto della pagina passata 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 GeeksforGeeks e desideri contribuire, puoi anche scrivere un articolo utilizzando write.geeksforgeeks.org o inviare il tuo articolo per posta a [email protected]. Guarda il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta altri Geeks.
Per favore scrivi commenti se trovi qualcosa di sbagliato o se vuoi condividere maggiori informazioni sull'argomento discusso sopra.