logo

Рад са ПДФ датотекама у Питхон-у

Сви морате знати шта су ПДФ-ови. У ствари, они су један од најважнијих и нашироко коришћених дигиталних медија. ПДФ је скраћеница за Портабле Доцумент Формат . Користи се .пдф проширење. Користи се за представљање и размену докумената поуздано независно од софтверског хардвера или оперативног система.
Инвентед би Адобе ПДФ је сада отворени стандард који одржава Међународна организација за стандардизацију (ИСО). ПДФ-ови могу садржати везе и дугмад у пољу аудио видео и пословне логике.
У овом чланку ћемо научити како можемо да урадимо различите операције као што су:
 

  • Извлачење текста из ПДФ-а
  • Ротирање ПДФ страница
  • Спајање ПДФ-ова
  • Раздвајање ПДФ-а
  • Додавање воденог жига на ПДФ странице

Инсталација: Коришћење једноставних Питхон скрипти!
Користићемо пипдф модул треће стране.
пипдф је питхон библиотека направљена као ПДФ алат. Способан је за:
 

  • Издвајање информација о документу (аутор наслова…)
  • Подела докумената страницу по страницу
  • Спајање докумената страницу по страницу
  • Обрезивање страница
  • Спајање више страница у једну страницу
  • Шифровање и дешифровање ПДФ датотека
  • и више!

Да бисте инсталирали пипдф, покрените следећу команду из командне линије:



pip install pypdf

Ово име модула разликује велика и мала слова, па се уверите да је и је мала а све остало велика. Доступни су сви кодови и ПДФ датотеке које се користе у овом водичу/чланку овде .

који су месеци к3

1. Екстраховање текста из ПДФ датотеке

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()) 

Излаз горњег програма изгледа овако:
 

20  
PythonBasics
S.R.Doty
August272008
Contents

1Preliminaries
4
1.1WhatisPython?...................................
..4
1.2Installationanddocumentation....................
.........4 [and some more lines...]

Хајде да покушамо да разумемо горњи код у деловима:
 

reader = PdfReader('example.pdf')  
  • Овде креирамо објекат од ПдфРеадер класе пипдф модула и проследите путању до ПДФ датотеке и добијете објекат за читање ПДФ-а.
     
print(len(reader.pages))  
  • странице својство даје број страница у ПДФ датотеци. На пример, у нашем случају то је 20 (погледајте први ред излаза).
     
pageObj = reader.pages[0]  
  • Сада креирамо објекат од ПагеОбјецт класа пипдф модула. ПДФ читач објекат има функцију странице[] који узима број странице (почевши од индекса 0) као аргумент и враћа објекат странице.
     
print(pageObj.extract_text())  
  • Објекат странице има функцију екстракт_текста() да бисте издвојили текст са ПДФ странице.


Напомена: Иако су ПДФ датотеке одличне за постављање текста на начин који је људима лак за штампање и читање, софтвер није једноставан за рашчлањивање у обичан текст. Као такав, пипдф може правити грешке приликом издвајања текста из ПДФ-а и чак можда неће моћи да отвори неке ПДФ-ове уопште. Нажалост, не можете много да урадите поводом овога. пипдф можда једноставно неће моћи да ради са неким од ваших конкретних ПДФ датотека.

2. Ротирање ПДФ страница
 

путовање али
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)): 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() 

Овде можете видети како је прва страница од ротатед_екампле.пдф изгледа као (десна слика) након ротације:

Ротирање пдф датотеке' title=

Неке важне тачке у вези са горњим кодом:
 

  • За ротацију прво креирамо објекат за читање ПДФ-а оригиналног ПДФ-а.
writer = PdfWriter()  
  • Ротиране странице ће бити уписане у нови ПДФ. За писање у ПДФ-ове користимо објекат ПдфВритер класа пипдф модула.
for page in range(len(pdfReader.pages)):  
pageObj = pdfReader.pages[page]
pageObj.rotate(rotation)
writer.add_page(pageObj)
  • Сада понављамо сваку страницу оригиналног ПДФ-а. Добијамо објекат странице .странице[] метод класе ПДФ читач. Сада ротирамо страницу ротирати() метод класе објекта странице. Затим додамо страницу у ПДФ вритер објекат користећи адд() метод класе ПДФ писача прослеђивањем објекта ротиране странице.
newFile = open(newFileName 'wb')  
writer.write(newFile)
newFile.close()
  • Сада морамо да запишемо ПДФ странице у нову ПДФ датотеку. Прво отварамо нови објекат датотеке и уписујемо ПДФ странице у њега користећи напиши() метод ПДФ писача објекта. На крају затварамо оригинални објекат ПДФ датотеке и нови објекат датотеке.

3. Спајање ПДФ датотека

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() 

Резултат горњег програма је комбиновани ПДФ комбиновани_пример.пдф добијене спајањем пример.пдф и ротатед_екампле.пдф .
 

стринг.формат у јава
  • Хајде да погледамо важне аспекте овог програма:
     
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)
  • На крају записујемо ПДФ странице у излазну ПДФ датотеку користећи писати метод ПДФ писача објекта.

4. Раздвајање ПДФ датотеке

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() 

Излаз ће бити три нове ПДФ датотеке са сплит 1 (страна 01) сплит 2 (страна 23) сплит 3 (страна 4-енд) .
Ниједна нова функција или класа није коришћена у горњем питхон програму. Користећи једноставну логику и итерације, креирали смо поделе прослеђеног ПДФ-а према проследјеној листи цепања .

ддл вс дмл

5. Додавање воденог жига на ПДФ странице

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() 

Ево како изгледа прва страница оригиналне (лево) и воденог жига (десно) ПДФ датотеке:
 

Водени жиг на пдф датотеку' loading='lazy' title=

  • Цео процес је исти као у примеру ротације странице. Једина разлика је:
     
wmpageObj = add_watermark(mywatermark pdfReader.pages[page])  
  • Објекат странице се конвертује у објекат странице са воденим жигом помоћу адд_ватермарк() функција.
  • Хајде да покушамо да разумемо адд_ватермарк() функција:
     
 reader = PdfReader(wmFile)  
pageObj.merge_page(reader.pages[0])
return pageObj
  • Пре свега, креирамо објекат за читање ПДФ-а водени жиг.пдф . До пренесеног објекта странице који користимо спајање_страница() функцију и проследите објекат странице прве странице ПДФ читача воденог жига. Ово ће прекрити водени жиг преко објекта странице.


И овде долазимо до краја овог дугачког туторијала о раду са ПДФ датотекама у Питхон-у.
Сада можете лако да креирате сопствени ПДФ менаџер!
Референце:
 

  • хттпс://аутоматетхеборингстуфф.цом/цхаптер13/
  • хттпс://пипи.орг/пројецт/пипдф/

Ако вам се свиђа ГеексфорГеекс и желите да допринесете, такође можете да напишете чланак користећи врите.геексфоргеекс.орг или да пошаљете свој чланак на адресу ревиев-теам@геексфоргеекс.орг. Погледајте како се ваш чланак појављује на главној страници ГеексфорГеекс-а и помозите другим штреберима.
Молимо вас да напишете коментаре ако нађете нешто нетачно или ако желите да поделите више информација о теми о којој се расправљало изнад.
 

Креирај квиз