Vsi morate vedeti, kaj so PDF-ji. Pravzaprav so eden najpomembnejših in najbolj razširjenih digitalnih medijev. PDF pomeni Prenosni format dokumenta . Uporablja se .pdf razširitev. Uporablja se za zanesljivo predstavitev in izmenjavo dokumentov, neodvisno od programske, strojne opreme ali operacijskega sistema.
Izumil Adobe , PDF je zdaj odprt standard, ki ga vzdržuje Mednarodna organizacija za standardizacijo (ISO). PDF-ji lahko vsebujejo povezave in gumbe, polja obrazcev, zvok, video in poslovno logiko.
V tem članku se bomo naučili, kako lahko izvajamo različne operacije, kot so:
- Pridobivanje besedila iz PDF-ja
- Vrtenje strani PDF
- Združevanje datotek PDF
- Razdelitev PDF
- Dodajanje vodnega žiga na strani PDF
Namestitev: Uporaba preprostih skriptov python!
Uporabili bomo modul tretje osebe, pypdf.
pypdf je knjižnica python, zgrajena kot komplet orodij PDF. Sposoben je:
- Izvleček podatkov o dokumentu (naslov, avtor, …)
- Razdelitev dokumentov po straneh
- Spajanje dokumentov stran za stranjo
- Obrezovanje strani
- Spajanje več strani v eno stran
- Šifriranje in dešifriranje datotek PDF
- in več!
Če želite namestiti pypdf, zaženite naslednji ukaz iz ukazne vrstice:
pip install pypdf>
To ime modula razlikuje med velikimi in malimi črkami, zato se prepričajte, da je in je z malimi črkami in vse ostalo je z velikimi črkami. Na voljo so vsa koda in datoteke PDF, uporabljene v tej vadnici/članku tukaj .
1. Ekstrahiranje besedila iz datoteke 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())> |
>
>
Rezultat zgornjega programa je videti takole:
20 PythonBasics S.R.Doty August27,2008 Contents 1Preliminaries 4 1.1WhatisPython?................................... ..4 1.2Installationanddocumentation.................... .........4 [and some more lines...]>
Poskusimo razumeti zgornjo kodo v delih:
reader = PdfReader('example.pdf')> - Tukaj ustvarimo predmet PdfReader razreda modula pypdf in posredujte pot do datoteke PDF ter pridobite objekt bralnika PDF.
print(len(reader.pages))>
- strani podaja število strani v datoteki PDF. Na primer, v našem primeru je 20 (glejte prvo vrstico izpisa).
pageObj = reader.pages[0]>
- Zdaj ustvarimo predmet PageObject razred modula pypdf. Predmet bralnika PDF ima funkcijo strani [] ki vzame številko strani (začenši z indeksom 0) kot argument in vrne objekt strani.
print(pageObj.extract_text())>
- Predmet strani ima funkcijo izvleček_besedila() za ekstrahiranje besedila s strani PDF.
Opomba: Medtem ko so datoteke PDF odlične za postavitev besedila na način, ki ga ljudje enostavno natisnejo in preberejo, jih programska oprema ne more preprosto razčleniti v golo besedilo. Kot tak lahko pypdf dela napake pri pridobivanju besedila iz PDF-ja in nekaterih PDF-jev morda sploh ne more odpreti. Na žalost glede tega ne morete veliko storiti. pypdf morda preprosto ne bo mogel delati z nekaterimi vašimi datotekami PDF.
2. Vrtenje strani PDF
Python
java sort arraylist
# 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()> |
>
>
Tukaj si lahko ogledate, kako na prvi strani rotated_example.pdf izgleda (desna slika) po rotaciji:

Nekaj pomembnih točk, povezanih z zgornjo kodo:
- Za rotacijo najprej ustvarimo predmet bralnika PDF izvirnega PDF-ja.
writer = PdfWriter()>
- Zasukane strani bodo zapisane v nov PDF. Za pisanje v PDF uporabljamo objekt of PdfWriter razred modula pypdf.
for page in range(len(pdfReader.pages)): pageObj = pdfReader.pages[page] pageObj.rotate(rotation) pdfWriter.add_page(pageObj)>
- Zdaj ponovimo vsako stran izvirnega PDF-ja. Predmet strani dobimo z .pages[] metoda PDF Reader razreda. Zdaj pa stran zavrtimo za vrti() metoda razreda objektov strani. Nato dodamo stran predmetu zapisovalnika PDF z uporabo dodatek() metoda razreda zapisovalnika PDF s posredovanjem predmeta zasukane strani.
newFile = open(newFileName, 'wb') pdfWriter.write(newFile) newFile.close()>
- Zdaj moramo strani PDF zapisati v novo datoteko PDF. Najprej odpremo nov predmet datoteke in vanj zapišemo strani PDF z uporabo pisati() metoda predmeta zapisovalnika PDF. Na koncu zapremo izvirni objekt datoteke PDF in objekt nove datoteke.
3. Združevanje datotek PDF
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()> |
>
>
Rezultat zgornjega programa je kombiniran PDF, kombinirani_primer.pdf , pridobljeno z združitvijo primer.pdf in rotated_example.pdf .
- Oglejmo si pomembne vidike tega programa:
pdfMerger = PdfMerger()>
- Za združevanje uporabljamo vnaprej zgrajen razred, PdfMerger modula pypdf.
Tukaj ustvarimo predmet pdfMerger združitvenega razreda PDF
for pdf in pdfs: pdfmerger.append(open(focus, 'rb'))>
- Zdaj dodamo datotečni objekt vsakega PDF-ja objektu združevanja PDF z uporabo pripni() metoda.
with open(output, 'wb') as f: pdfMerger.write(f)>
- Na koncu zapišemo strani PDF v izhodno datoteko PDF z uporabo pisati metoda združitvenega predmeta PDF.
4. Razdelitev datoteke 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>(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()> |
>
>
Rezultat bodo tri nove datoteke PDF z del 1 (stran 0,1), del 2 (stran 2,3), del 3 (stran 4-konec) .
V zgornjem programu python ni bila uporabljena nobena nova funkcija ali razred. Z uporabo preproste logike in iteracij smo ustvarili razdelitve prejetih PDF-jev glede na seznam prejetih razcepi .
5. Dodajanje vodnega žiga na strani PDF
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()> |
>
>
Tukaj je videti prva stran izvirne (levo) in z vodnim žigom (desno) datoteke PDF:

chiranjeevi igralec
- Celoten postopek je enak kot v primeru vrtenja strani. Edina razlika je:
wmpageObj = add_watermark(mywatermark, pdfReader.pages[page])>
- Predmet strani se pretvori v objekt strani z vodnim žigom z uporabo add_watermark() funkcijo.
- Poskusimo razumeti add_watermark() funkcija:
reader = PdfReader(wmFile) pageObj.merge_page(reader.pages[0]) wmFileObj.close() return pageObj>
- Predvsem ustvarimo objekt bralnika PDF vodni žig.pdf . Predmetu strani uporabimo merge_page() funkcijo in posreduje predmet strani prve strani predmeta bralnika PDF z vodnim žigom. To bo prekrivalo vodni žig čez objekt strani, ki ste jo opravili.
In tukaj smo prišli do konca te dolge vadnice o delu z datotekami PDF v pythonu.
Zdaj lahko preprosto ustvarite svojega upravitelja PDF!
Reference:
- https://automatetheboringstuff.com/chapter13/
- https://pypi.org/project/pypdf/
Če vam je všeč techcodeview.com in bi radi prispevali, lahko tudi napišete članek z uporabo write.techcodeview.com ali svoj članek pošljete na naslov [email protected]
Prosimo, napišite komentarje, če najdete karkoli napačnega ali če želite deliti več informacij o zgoraj obravnavani temi.