Sinun kaikkien on tiedettävä, mitä PDF-tiedostot ovat. Itse asiassa ne ovat yksi tärkeimmistä ja laajimmin käytetyistä digitaalisista medioista. PDF tarkoittaa Kannettava asiakirjamuoto . Se käyttää .pdf laajennus. Sitä käytetään asiakirjojen esittämiseen ja vaihtamiseen luotettavasti ohjelmistosta, laitteistosta tai käyttöjärjestelmästä riippumatta.
Keksijä Adobe , PDF on nyt Kansainvälisen standardointijärjestön (ISO) ylläpitämä avoin standardi. PDF-tiedostot voivat sisältää linkkejä ja painikkeita, lomakekenttiä, ääntä, videota ja liiketoimintalogiikkaa.
Tässä artikkelissa opimme, kuinka voimme tehdä erilaisia toimintoja, kuten:
- Tekstin purkaminen PDF-tiedostosta
- Kääntyvät PDF-sivut
- PDF-tiedostojen yhdistäminen
- PDF:n jakaminen
- Vesileiman lisääminen PDF-sivuille
Asennus: Käytä yksinkertaisia python-skriptejä!
Käytämme kolmannen osapuolen moduulia, pypdf.
pypdf on python-kirjasto, joka on rakennettu PDF-työkalusarjaksi. Se pystyy:
- Poimitaan asiakirjan tiedot (nimi, tekijä,…)
- Asiakirjojen jakaminen sivulta sivulta
- Asiakirjojen yhdistäminen sivu sivulta
- Sivujen rajaus
- Useiden sivujen yhdistäminen yhdeksi sivuksi
- PDF-tiedostojen salaus ja salauksen purku
- ja enemmän!
Asenna pypdf suorittamalla seuraava komento komentoriviltä:
pip install pypdf>
Tässä moduulin nimessä kirjainkoolla on merkitystä, joten varmista, että ja on pieniä kirjaimia ja kaikki muu on isoja. Kaikki tässä opetusohjelmassa/artikkelissa käytetyt koodit ja PDF-tiedostot ovat saatavilla tässä .
1. Tekstin purkaminen PDF-tiedostosta
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())> |
>
>
Yllä olevan ohjelman tulos näyttää tältä:
20 PythonBasics S.R.Doty August27,2008 Contents 1Preliminaries 4 1.1WhatisPython?................................... ..4 1.2Installationanddocumentation.................... .........4 [and some more lines...]>
Yritetään ymmärtää yllä oleva koodi paloina:
reader = PdfReader('example.pdf')> - Täällä luomme kohteen PdfReader pypdf-moduulin luokan ja välitä polku PDF-tiedostoon ja hanki PDF-lukuobjekti.
print(len(reader.pages))>
- sivuja ominaisuus ilmoittaa PDF-tiedoston sivujen lukumäärän. Esimerkiksi meidän tapauksessamme se on 20 (katso tulosteen ensimmäinen rivi).
pageObj = reader.pages[0]>
- Nyt luomme kohteen PageObject pypdf-moduulin luokka. PDF-lukijaobjektilla on toiminto sivut[] joka ottaa sivunumeron (alkaen indeksistä 0) argumenttina ja palauttaa sivuobjektin.
print(pageObj.extract_text())>
- Sivuobjektilla on toiminto Pura_teksti() poimia tekstiä PDF-sivulta.
Huomautus: Vaikka PDF-tiedostot sopivat mainiosti tekstin asettamiseen tavalla, joka on helppo tulostaa ja lukea, ohjelmistojen ei ole helppoa jäsentää niitä tavalliseksi tekstiksi. Sellaisenaan pypdf saattaa tehdä virheitä poimiessaan tekstiä PDF-tiedostosta, eikä se välttämättä pysty avaamaan kaikkia PDF-tiedostoja. Sinä et valitettavasti voi tälle paljoa tehdä. pypdf ei ehkä yksinkertaisesti pysty toimimaan joidenkin tiettyjen PDF-tiedostojesi kanssa.
2. Kääntyvät PDF-sivut
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()> |
>
muuntaa merkkijono int javaksi
>
Täällä voit nähdä, kuinka ensimmäinen sivu rotated_example.pdf näyttää (oikea kuva) pyörityksen jälkeen:

Joitakin yllä olevaan koodiin liittyviä tärkeitä kohtia:
- Kääntöä varten luomme ensin PDF-lukijaobjektin alkuperäisestä PDF-tiedostosta.
writer = PdfWriter()>
- Kierretyt sivut kirjoitetaan uuteen PDF-tiedostoon. PDF-tiedostoihin kirjoittamiseen käytämme objektia PdfWriter pypdf-moduulin luokka.
for page in range(len(pdfReader.pages)): pageObj = pdfReader.pages[page] pageObj.rotate(rotation) pdfWriter.add_page(pageObj)>
- Nyt toistamme alkuperäisen PDF:n jokaisen sivun. Haemme sivuobjektin mukaan .pages[] PDF-lukijaluokan menetelmä. Nyt käännämme sivua kiertää() sivuobjektiluokan menetelmä. Sitten lisäämme sivun PDF-kirjoitusobjektiin käyttämällä lisäys () PDF-kirjoitusluokan menetelmä ohittamalla kierretty sivuobjekti.
newFile = open(newFileName, 'wb') pdfWriter.write(newFile) newFile.close()>
- Nyt meidän on kirjoitettava PDF-sivut uuteen PDF-tiedostoon. Ensin avaamme uuden tiedostoobjektin ja kirjoitamme siihen PDF-sivuja käyttämällä kirjoittaa() PDF-kirjoitusobjektin menetelmä. Lopuksi suljemme alkuperäisen PDF-tiedostoobjektin ja uuden tiedostoobjektin.
3. PDF-tiedostojen yhdistäminen
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()> |
>
>
Yllä olevan ohjelman tulos on yhdistetty PDF, yhdistetty_esimerkki.pdf , saatu yhdistämällä esimerkki.pdf ja rotated_example.pdf .
- Katsotaanpa tämän ohjelman tärkeitä näkökohtia:
pdfMerger = PdfMerger()>
- Käytämme yhdistämiseen valmiiksi rakennettua luokkaa, Pdfmerger pypdf-moduulista.
Täällä luomme objektin pdfYhdistäminen PDF-fuusioluokasta
for pdf in pdfs: pdfmerger.append(open(focus, 'rb'))>
- Nyt liitämme jokaisen PDF-tiedoston tiedostoobjektin PDF-fuusioobjektiin käyttämällä liitä() menetelmä.
with open(output, 'wb') as f: pdfMerger.write(f)>
- Lopuksi kirjoitamme PDF-sivut tulostettavaan PDF-tiedostoon käyttämällä kirjoittaa PDF-fuusioobjektin menetelmä.
4. PDF-tiedoston jakaminen
Python
äärellisen tilan kone
# 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()> |
>
>
Tulos on kolme uutta PDF-tiedostoa jako 1 (sivu 0,1), jako 2 (sivu 2,3), jako 3 (sivu 4-pää) .
Yllä olevassa python-ohjelmassa ei ole käytetty uutta funktiota tai luokkaa. Käytämme yksinkertaista logiikkaa ja iteraatioita, ja loimme hyväksytyn PDF:n jaot hyväksytyn luettelon mukaan halkeaa .
5. Vesileiman lisääminen PDF-sivuille
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()> |
>
>
Alkuperäisen (vasemmalla) ja vesileimalla (oikealla) PDF-tiedoston ensimmäinen sivu näyttää tältä:

- Kaikki prosessi on sama kuin sivun kiertoesimerkissä. Ainoa ero on:
wmpageObj = add_watermark(mywatermark, pdfReader.pages[page])>
- Sivuobjekti muunnetaan vesileimaiseksi sivuobjektiksi käyttämällä add_watermark() toiminto.
- Yritetään ymmärtää add_watermark() toiminto:
reader = PdfReader(wmFile) pageObj.merge_page(reader.pages[0]) wmFileObj.close() return pageObj>
- Ensinnäkin luomme PDF-lukijaobjektin vesileima.pdf . Käytämme hyväksytylle sivuobjektille yhdistä_sivu() funktio ja välitä vesileiman PDF-lukijaobjektin ensimmäisen sivun sivuobjekti. Tämä peittää vesileiman ohitetun sivuobjektin päälle.
Ja tässä pääsemme tämän pitkän opetusohjelman loppuun, joka käsittelee PDF-tiedostojen käyttöä pythonissa.
Nyt voit helposti luoda oman PDF-hallinnan!
Viitteet:
- https://automatetheboringstuff.com/chapter13/
- https://pypi.org/project/pypdf/
Jos pidät techcodeview.comsta ja haluat osallistua, voit myös kirjoittaa artikkelin osoitteessa write.techcodeview.com tai lähettää artikkelisi sähköpostitse osoitteeseen [email protected]
Kirjoita kommentteja, jos huomaat jotain väärin tai jos haluat jakaa lisätietoja yllä käsitellystä aiheesta.