Alle må være kjent med hva PDF-filer er. Faktisk er de et av de viktigste og mest brukte digitale mediene. PDF står for Bærbart dokumentformat . Det bruker .pdf Utvidelse. Den brukes til å presentere og utveksle dokumenter pålitelig, uavhengig av programvare, maskinvare eller operativsystem.
Oppfunnet av Adobe , PDF er nå en åpen standard vedlikeholdt av International Organization for Standardization (ISO). PDF-filer kan inneholde lenker og knapper, skjemafelt, lyd, video og forretningslogikk.
I denne artikkelen vil vi lære hvordan vi kan utføre ulike operasjoner som:
- Trekker ut tekst fra PDF
- Roterende PDF-sider
- Slå sammen PDF-er
- Deling av PDF
- Legger til vannmerke på PDF-sider
Installasjon: Bruk enkle python-skript!
Vi vil bruke en tredjepartsmodul, pypdf.
pypdf er et python-bibliotek bygget som et PDF-verktøysett. Den er i stand til:
- Trekke ut dokumentinformasjon (tittel, forfatter, ...)
- Del opp dokumenter side for side
- Slå sammen dokumenter side for side
- Beskjæring av sider
- Slå sammen flere sider til én enkelt side
- Kryptering og dekryptering av PDF-filer
- og mer!
For å installere pypdf, kjør følgende kommando fra kommandolinjen:
pip install pypdf>
Dette modulnavnet skiller mellom store og små bokstaver, så sørg for at og er små bokstaver og alt annet er store bokstaver. All koden og PDF-filene som brukes i denne opplæringen/artikkelen er tilgjengelige her .
1. Trekke ut tekst fra PDF-fil
Python
understreng i bash
# 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())> |
>
>
Utdataene fra programmet ovenfor ser slik ut:
20 PythonBasics S.R.Doty August27,2008 Contents 1Preliminaries 4 1.1WhatisPython?................................... ..4 1.2Installationanddocumentation.................... .........4 [and some more lines...]>
La oss prøve å forstå koden ovenfor i biter:
reader = PdfReader('example.pdf')> - Her lager vi et objekt av PdfReader klasse av pypdf-modulen og gi stien til PDF-filen og få et PDF-leserobjekt.
print(len(reader.pages))>
- sider egenskapen gir antall sider i PDF-filen. For eksempel, i vårt tilfelle, er det 20 (se første linje med utdata).
pageObj = reader.pages[0]>
- Nå lager vi et objekt av Sideobjekt klasse av pydf-modulen. PDF-leserobjekt har funksjon sider[] som tar sidenummer (starter fra indeks 0) som argument og returnerer sideobjektet.
print(pageObj.extract_text())>
- Sideobjekt har funksjon extract_text() for å trekke ut tekst fra PDF-siden.
Merk: Mens PDF-filer er flotte for å legge ut tekst på en måte som er lett for folk å skrive ut og lese, er de ikke enkle for programvare å analysere til ren tekst. Som sådan kan pydf gjøre feil når du trekker ut tekst fra en PDF og kan til og med være ute av stand til å åpne noen PDF-filer i det hele tatt. Det er ikke mye du kan gjøre med dette, dessverre. pypdf kan rett og slett ikke fungere med noen av dine spesielle PDF-filer.
2. Roterende PDF-sider
Python
# 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()> |
java liste node
>
>
Her kan du se hvordan den første siden av rotert_eksempel.pdf ser slik ut (høyre bilde) etter rotasjon:
java fangst prøve

Noen viktige punkter knyttet til koden ovenfor:
- For rotasjon oppretter vi først et PDF-leserobjekt av den originale PDF-en.
writer = PdfWriter()>
- Roterte sider vil bli skrevet til en ny PDF. For å skrive til PDF-er bruker vi objektet til Pdf Writer klasse av pydf-modulen.
for page in range(len(pdfReader.pages)): pageObj = pdfReader.pages[page] pageObj.rotate(rotation) pdfWriter.add_page(pageObj)>
- Nå gjentar vi hver side i den originale PDF-filen. Vi får sideobjekt ved .pages[] metode for PDF-leserklasse. Nå roterer vi siden etter rotere() metode for sideobjektklasse. Deretter legger vi til en side til PDF-skriverobjekt ved hjelp av addage() metode for PDF-skriverklassen ved å sende det roterte sideobjektet.
newFile = open(newFileName, 'wb') pdfWriter.write(newFile) newFile.close()>
- Nå må vi skrive PDF-sidene til en ny PDF-fil. Først åpner vi det nye filobjektet og skriver PDF-sider til det ved hjelp av skrive() metode for PDF-skriverobjekt. Til slutt lukker vi det originale PDF-filobjektet og det nye filobjektet.
3. Slå sammen PDF-filer
Python
# 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()> |
>
>
Utdataene fra programmet ovenfor er en kombinert PDF, kombinert_eksempel.pdf , oppnådd ved sammenslåing eksempel.pdf og rotert_eksempel.pdf .
- La oss ta en titt på viktige aspekter ved dette programmet:
pdfMerger = PdfMerger()>
- For sammenslåing bruker vi en forhåndsbygd klasse, PdfMerger av pydf-modulen.
Her lager vi et objekt pdfFusjon av PDF-fusjonsklasse
for pdf in pdfs: pdfmerger.append(open(focus, 'rb'))>
- Nå legger vi til filobjekt for hver PDF til PDF-fusjonsobjekt ved å bruke legge til() metode.
with open(output, 'wb') as f: pdfMerger.write(f)>
- Til slutt skriver vi PDF-sidene til utdata-PDF-filen ved hjelp av skrive metode for PDF-fusjonsobjekt.
4. Deling av PDF-fil
Python
skriveskriftbryter
# 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()> |
>
>
Utdata vil være tre nye PDF-filer med delt 1 (side 0,1), delt 2(side 2,3), delt 3(side 4-ende) .
Ingen ny funksjon eller klasse har blitt brukt i pythonprogrammet ovenfor. Ved å bruke enkel logikk og iterasjoner opprettet vi delingene av bestått PDF i henhold til den beståtte listen deler seg .
5. Legge til vannmerke på PDF-sider
Python
# 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()> |
java-forekomst av
>
>
Slik ser den første siden av original (venstre) og vannmerket (høyre) PDF-fil ut:

- Hele prosessen er den samme som siderotasjonseksemplet. Eneste forskjellen er:
wmpageObj = add_watermark(mywatermark, pdfReader.pages[page])>
- Sideobjekt konverteres til vannmerket sideobjekt ved hjelp av Legg til vannmerke() funksjon.
- La oss prøve å forstå Legg til vannmerke() funksjon:
reader = PdfReader(wmFile) pageObj.merge_page(reader.pages[0]) wmFileObj.close() return pageObj>
- Fremst lager vi et PDF-leserobjekt av vannmerke.pdf . Til det beståtte sideobjektet bruker vi merge_page() funksjon og send sideobjektet til den første siden av PDF-leserobjektet for vannmerke. Dette vil legge vannmerket over det passerte sideobjektet.
Og her kommer vi til slutten av denne lange opplæringen om å jobbe med PDF-filer i python.
Nå kan du enkelt lage din egen PDF-behandler!
Referanser:
- https://automatetheboringstuff.com/chapter13/
- https://pypi.org/project/pypdf/
Hvis du liker techcodeview.com og ønsker å bidra, kan du også skrive en artikkel ved å bruke write.techcodeview.com eller sende artikkelen til [email protected]
Vennligst skriv kommentarer hvis du finner noe feil, eller hvis du vil dele mer informasjon om emnet diskutert ovenfor.