Hepiniz PDF'lerin ne olduğunu biliyor olmalısınız. Aslında bunlar en önemli ve en yaygın kullanılan dijital medyalardan biridir. PDF'nin anlamı Taşınabilir Belge Formatı . Kullanır .pdf eklenti. Yazılım donanımı veya işletim sisteminden bağımsız olarak belgeleri güvenilir bir şekilde sunmak ve paylaşmak için kullanılır.
Tarafından icat edildi Adobe PDF artık Uluslararası Standardizasyon Örgütü (ISO) tarafından sürdürülen açık bir standarttır. PDF'ler, ses, video ve iş mantığı alanlarındaki bağlantılar ve düğmeleri içerebilir.
Bu yazıda aşağıdaki gibi çeşitli işlemleri nasıl yapabileceğimizi öğreneceğiz:
- PDF'den metin çıkarma
- PDF sayfalarını döndürme
- PDF'leri birleştirme
- PDF'yi bölme
- PDF sayfalarına filigran ekleme
Kurulum: Basit python komut dosyalarını kullanma!
Üçüncü taraf bir modül pypdf kullanacağız.
pypdf, PDF araç seti olarak oluşturulmuş bir python kütüphanesidir. Şunları yapabilir:
- Belge bilgilerinin çıkarılması (başlık yazarı…)
- Belgeleri sayfa sayfa bölme
- Belgeleri sayfa sayfa birleştirme
- Sayfaları kırpma
- Birden fazla sayfayı tek sayfada birleştirme
- PDF dosyalarını şifreleme ve şifresini çözme
- ve daha fazlası!
Pypdf'yi yüklemek için komut satırından aşağıdaki komutu çalıştırın:
pip install pypdfBu modül adı büyük/küçük harfe duyarlı olduğundan emin olun. Ve küçük harftir ve geri kalan her şey büyük harftir. Bu eğitimde/makalede kullanılan tüm kod ve PDF dosyaları mevcuttur Burada .
tasarım desenleri java
1. PDF dosyasından metin çıkarma
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())
Yukarıdaki programın çıktısı şuna benzer:
20
PythonBasics
S.R.Doty
August272008
Contents
1Preliminaries
4
1.1WhatisPython?...................................
..4
1.2Installationanddocumentation....................
.........4 [and some more lines...]
Yukarıdaki kodu parçalar halinde anlamaya çalışalım:
reader = PdfReader('example.pdf')
- Burada bir nesne yaratıyoruz Pdf Okuyucu pypdf modülünün sınıfını seçin ve PDF dosyasının yolunu iletin ve bir PDF okuyucu nesnesi alın.
print(len(reader.pages))
- sayfalar özelliği PDF dosyasındaki sayfa sayısını verir. Örneğin bizim durumumuzda 20'dir (çıkışın ilk satırına bakın).
pageObj = reader.pages[0]
- Şimdi bir nesne yaratıyoruz SayfaNesnesi pypdf modülü sınıfı. PDF okuyucu nesnesinin işlevi vardır sayfalar[] argüman olarak sayfa numarasını (indeks 0'dan başlayarak) alır ve sayfa nesnesini döndürür.
print(pageObj.extract_text())
- Sayfa nesnesinin işlevi var özü_metin() PDF sayfasından metin çıkarmak için.
Not: PDF dosyaları, metni insanların kolayca yazdırabileceği ve okuyabileceği bir şekilde düzenlemek için harika olsa da, yazılımın bunları düz metne ayrıştırması kolay değildir. Bu nedenle pypdf, PDF'den metin çıkarırken hata yapabilir ve hatta bazı PDF'leri hiç açamayabilir. Bu konuda maalesef yapabileceğiniz pek bir şey yok. pypdf, belirli PDF dosyalarınızın bazılarıyla çalışamayabilir.
dize dizisi
2. PDF sayfalarını döndürme
# 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()
Burada ilk sayfanın nasıl olduğunu görebilirsiniz. döndürülmüş_örnek.pdf döndürmeden sonra (sağdaki resim) gibi görünüyor:

java'da json'a itiraz
Yukarıdaki kodla ilgili bazı önemli noktalar:
- Döndürme için öncelikle orijinal PDF'nin bir PDF okuyucu nesnesini oluştururuz.
writer = PdfWriter()
- Döndürülmüş sayfalar yeni bir PDF'ye yazılacaktır. PDF'lere yazmak için nesnesini kullanırız Pdf Yazarı pypdf modülü sınıfı.
for page in range(len(pdfReader.pages)):
pageObj = pdfReader.pages[page]
pageObj.rotate(rotation)
writer.add_page(pageObj)
- Şimdi orijinal PDF'nin her sayfasını yineliyoruz. Sayfa nesnesini şu şekilde alıyoruz: .sayfalar[] PDF okuyucu sınıfının yöntemi. Şimdi sayfayı şu şekilde döndürüyoruz: döndür() sayfa nesnesi sınıfının yöntemi. Daha sonra kullanarak PDF yazıcı nesnesine bir sayfa ekliyoruz. eklemek() Döndürülmüş sayfa nesnesini ileterek PDF yazıcı sınıfının yöntemini kullanın.
newFile = open(newFileName 'wb')
writer.write(newFile)
newFile.close()
- Şimdi PDF sayfalarını yeni bir PDF dosyasına yazmamız gerekiyor. Öncelikle yeni dosya nesnesini açıyoruz ve ona PDF sayfaları yazıyoruz. yazmak() PDF yazıcı nesnesinin yöntemi. Son olarak orijinal PDF dosya nesnesini ve yeni dosya nesnesini kapatıyoruz.
3. PDF dosyalarını birleştirme
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()
Yukarıdaki programın çıktısı birleştirilmiş bir PDF'dir birleştirilmiş_örnek.pdf birleştirilmesiyle elde edilen örnek.pdf Ve döndürülmüş_örnek.pdf .
- Bu programın önemli yönlerine bir göz atalım:
pdfWriter = PdfWriter()- Birleştirme için önceden oluşturulmuş bir sınıf kullanıyoruz Pdf Yazarı pypdf modülünün.
Burada bir nesne yaratıyoruz pdf yazarı PDF yazar sınıfının
# appending pdfs one by one
for pdf in pdfs:
pdfWriter.append(pdf)
- Şimdi her PDF'nin dosya nesnesini PDF yazıcı nesnesine ekliyoruz. ekleme() Yöntem.
# writing combined pdf to output pdf file
with open(output 'wb') as f:
pdfWriter.write(f)
- Son olarak PDF sayfalarını kullanarak çıktı PDF dosyasına yazıyoruz. yazmak PDF yazıcı nesnesinin yöntemi.
4. PDF dosyasını bölme
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()
Çıktı üç yeni PDF dosyası olacak bölünmüş 1 (sayfa 01) bölünmüş 2(sayfa 23) bölünmüş 3(sayfa 4-son) .
Yukarıdaki python programında yeni bir fonksiyon veya sınıf kullanılmamıştır. Basit bir mantık ve yinelemeler kullanarak, aktarılan PDF'nin aktarılanlar listesine göre bölümlerini oluşturduk Bölünmeler .
akşam yemeği ile akşam yemeği arasındaki fark
5. PDF sayfalarına filigran ekleme
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()
Orijinal (solda) ve filigranlı (sağda) PDF dosyasının ilk sayfası şu şekilde görünür:

- Tüm süreç sayfa döndürme örneğiyle aynıdır. Tek fark şu:
wmpageObj = add_watermark(mywatermark pdfReader.pages[page])
- Sayfa nesnesi kullanılarak filigranlı sayfa nesnesine dönüştürülür. add_watermark() işlev.
- Anlamaya çalışalım add_watermark() işlev:
reader = PdfReader(wmFile)
pageObj.merge_page(reader.pages[0])
return pageObj
- Öncelikle bir PDF okuyucu nesnesi oluşturuyoruz filigran.pdf . Kullandığımız iletilen sayfa nesnesine birleştirme_sayfası() filigran PDF okuyucu nesnesinin ilk sayfasının sayfa nesnesini çalıştırın ve iletin. Bu, filigranı aktarılan sayfa nesnesinin üzerine yerleştirecektir.
Ve burada Python'da PDF dosyalarıyla çalışmaya ilişkin bu uzun eğitimin sonuna ulaşıyoruz.
Artık kendi PDF yöneticinizi kolayca oluşturabilirsiniz!
Referanslar:
- https://automatetheboringstuff.com/chapter13/
- https://pypi.org/project/pypdf/
GeeksforGeeks'i beğeniyorsanız ve katkıda bulunmak istiyorsanız write.geeksforgeeks.org adresini kullanarak bir makale yazabilir veya makalenizi [email protected] adresine e-postayla gönderebilirsiniz. Makalenizin GeeksforGeeks ana sayfasında görünmesini sağlayın ve diğer Geek'lere yardımcı olun.
Yanlış bir şey bulursanız veya yukarıda tartışılan konu hakkında daha fazla bilgi paylaşmak istiyorsanız lütfen yorum yazın.