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 strojne programske 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 iz polj, avdio videa in poslovne logike.
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:
- Pridobivanje informacij o dokumentu (naslov avtorja ...)
- 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 pypdfTo 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 .
java do while zanka
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
August272008
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 narediti. pypdf morda preprosto ne bo mogel delati z nekaterimi vašimi datotekami PDF.
2. Vrtenje strani PDF
python ozPython
# 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()
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 datoteke PDF uporabljamo objekt of PdfWriter razred modula pypdf.
for page in range(len(pdfReader.pages)):
pageObj = pdfReader.pages[page]
pageObj.rotate(rotation)
writer.add_page(pageObj)
- Zdaj ponovimo vsako stran izvirnega PDF-ja. Predmet strani dobimo z .pages[] metoda razreda bralnika PDF. Zdaj stran zavrtimo za vrti() metoda razreda objektov strani. Nato dodamo stran predmetu zapisovalnika PDF z uporabo dodaj() metoda razreda zapisovalnika PDF s posredovanjem predmeta zasukane strani.
newFile = open(newFileName 'wb')
writer.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 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()
Rezultat zgornjega programa je kombiniran PDF kombinirani_primer.pdf pridobljeno z združitvijo primer.pdf in rotated_example.pdf .
filmi 123 do
- Oglejmo si pomembne vidike tega programa:
pdfWriter = PdfWriter()- Za združevanje uporabljamo vnaprej zgrajen razred PdfWriter modula pypdf.
Tukaj ustvarimo objekt pdfwriter razreda pisca PDF
# appending pdfs one by one
for pdf in pdfs:
pdfWriter.append(pdf)
- Zdaj dodamo datotečni objekt vsakega PDF-ja objektu zapisovalnika PDF z uporabo pripni() metoda.
# writing combined pdf to output pdf file
with open(output 'wb') as f:
pdfWriter.write(f)
- Nazadnje zapišemo strani PDF v izhodno datoteko PDF z uporabo pisati metoda predmeta zapisovalnika 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(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()
Rezultat bodo tri nove datoteke PDF z del 1 (stran 01) del 2 (stran 23) 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 opravljenih PDF-jev glede na seznam opravljenih razcepi .
kako inicializirati matriko v Javi
5. Dodajanje vodnega žiga na strani 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()
Tukaj je videti prva stran izvirne (levo) in z vodnim žigom (desno) datoteke PDF:

- 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])
return pageObj
- Predvsem ustvarimo objekt bralnika PDF vodni žig.pdf . Na predmet posredovane strani, ki ga uporabljamo 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 GeeksforGeeks všeč in bi radi prispevali, lahko tudi napišete članek z uporabo write.geeksforgeeks.org ali pošljete svoj članek na [email protected]. Oglejte si, da se vaš članek pojavi na glavni strani GeeksforGeeks in pomagajte drugim Geekom.
Prosimo, napišite komentarje, če najdete kar koli nepravilnega ali če želite deliti več informacij o zgoraj obravnavani temi.