Wszyscy powinniście wiedzieć, czym są pliki PDF. W rzeczywistości są jednymi z najważniejszych i najpowszechniej używanych mediów cyfrowych. PDF oznacza Przenośny format dokumentu . Używa .pdf rozszerzenie. Służy do niezawodnego prezentowania i wymiany dokumentów niezależnie od oprogramowania sprzętowego lub systemu operacyjnego.
Wynaleziony przez Cegła suszona na słońcu PDF jest obecnie otwartym standardem utrzymywanym przez Międzynarodową Organizację Normalizacyjną (ISO). Pliki PDF mogą zawierać łącza i przyciski z pól audio wideo i logiki biznesowej.
W tym artykule dowiemy się, jak możemy wykonywać różne operacje, takie jak:
- Wyodrębnianie tekstu z pliku PDF
- Obracanie stron PDF
- Łączenie plików PDF
- Dzielenie pliku PDF
- Dodawanie znaku wodnego do stron PDF
Instalacja: Używanie prostych skryptów Pythona!
Będziemy używać modułu pypdf innej firmy.
pypdf to biblioteka Pythona zbudowana jako zestaw narzędzi PDF. Potrafi:
- Wyodrębnianie informacji o dokumencie (autor tytułu…)
- Dzielenie dokumentów strona po stronie
- Łączenie dokumentów strona po stronie
- Przycinanie stron
- Łączenie wielu stron w jedną
- Szyfrowanie i deszyfrowanie plików PDF
- i więcej!
Aby zainstalować pypdf, uruchom następujące polecenie z wiersza poleceń:
pip install pypdfW nazwie modułu rozróżniana jest wielkość liter, więc upewnij się, że I jest pisany małymi literami, a wszystko inne jest pisane wielkimi literami. Dostępny jest cały kod i pliki PDF użyte w tym samouczku/artykule Tutaj .
zawijanie słów w CSS
1. Wyodrębnianie tekstu z pliku 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())
Dane wyjściowe powyższego programu wyglądają następująco:
jaki jest rozmiar ekranu mojego komputera
20
PythonBasics
S.R.Doty
August272008
Contents
1Preliminaries
4
1.1WhatisPython?...................................
..4
1.2Installationanddocumentation....................
.........4 [and some more lines...]
Spróbujmy zrozumieć powyższy kod fragmentami:
reader = PdfReader('example.pdf')
- Tutaj tworzymy obiekt Czytnik PDF class modułu pypdf i podaj ścieżkę do pliku PDF i pobierz obiekt czytnika PDF.
print(len(reader.pages))
- strony Właściwość podaje liczbę stron w pliku PDF. Na przykład w naszym przypadku jest to 20 (patrz pierwszy wiersz wyniku).
pageObj = reader.pages[0]
- Teraz tworzymy obiekt Obiekt strony klasa modułu pypdf. Obiekt czytnika PDF ma funkcję strony[] który przyjmuje numer strony (zaczynając od indeksu 0) jako argument i zwraca obiekt strony.
print(pageObj.extract_text())
- Obiekt strony ma funkcję wyodrębnij_tekst() aby wyodrębnić tekst ze strony PDF.
Notatka: Chociaż pliki PDF doskonale nadają się do układania tekstu w sposób łatwy do wydrukowania i odczytania, oprogramowanie nie jest w stanie łatwo je przetworzyć na zwykły tekst. W związku z tym pypdf może popełniać błędy podczas wyodrębniania tekstu z pliku PDF, a nawet może w ogóle nie być w stanie otworzyć niektórych plików PDF. Niestety niewiele możesz z tym zrobić. pypdf może po prostu nie działać z niektórymi konkretnymi plikami PDF.
2. Obracanie stron PDF
# 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()
Tutaj możesz zobaczyć, jak wygląda pierwsza strona obrócony_przykład.pdf wygląda (prawy obraz) po obróceniu:

Kilka ważnych punktów związanych z powyższym kodem:
- W celu rotacji najpierw tworzymy obiekt czytnika PDF z oryginalnego pliku PDF.
writer = PdfWriter()
- Obrócone strony zostaną zapisane w nowym pliku PDF. Do zapisu w plikach PDF używamy obiektu PDFWriter klasa modułu pypdf.
for page in range(len(pdfReader.pages)):
pageObj = pdfReader.pages[page]
pageObj.rotate(rotation)
writer.add_page(pageObj)
- Teraz iterujemy każdą stronę oryginalnego pliku PDF. Otrzymujemy obiekt strony według .strony[] metoda klasy czytnika PDF. Teraz obracamy stronę o obracać() metoda klasy obiektu strony. Następnie dodajemy stronę do obiektu zapisującego PDF za pomocą dodać() metoda klasy modułu zapisywania plików PDF poprzez przekazanie obróconego obiektu strony.
newFile = open(newFileName 'wb')
writer.write(newFile)
newFile.close()
- Teraz musimy zapisać strony PDF w nowym pliku PDF. Najpierw otwieramy nowy obiekt plikowy i zapisujemy do niego strony PDF za pomocą pisać() metoda obiektu zapisującego PDF. Na koniec zamykamy oryginalny obiekt pliku PDF i nowy obiekt pliku.
3. Łączenie plików 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()
Dane wyjściowe powyższego programu to połączony plik PDF połączony_przykład.pdf uzyskane przez połączenie przykład.pdf I obrócony_przykład.pdf .
- Przyjrzyjmy się ważnym aspektom tego programu:
pdfWriter = PdfWriter()- Do łączenia używamy gotowej klasy PDFWriter modułu pypdf.
Tutaj tworzymy obiekt pdfwriter zajęć z programu do tworzenia plików PDF
# appending pdfs one by one
for pdf in pdfs:
pdfWriter.append(pdf)
- Teraz dołączamy obiekt pliku każdego pliku PDF do obiektu zapisującego PDF za pomocą dodać() metoda.
# writing combined pdf to output pdf file
with open(output 'wb') as f:
pdfWriter.write(f)
- Na koniec zapisujemy strony PDF do wyjściowego pliku PDF za pomocą pisać metoda obiektu zapisującego PDF.
4. Dzielenie pliku PDF
Algorytm wyszukiwania binarnegoPython
# 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()
Wynikiem będą trzy nowe pliki PDF z rozszerzeniem podział 1 (strona 01) podział 2 (strona 23) podział 3 (strona 4-koniec) .
W powyższym programie Pythona nie użyto żadnej nowej funkcji ani klasy. Stosując prostą logikę i iteracje, utworzyliśmy podziały przekazanego pliku PDF zgodnie z przekazaną listą dzieli .
foreach Java
5. Dodawanie znaku wodnego do stron 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()
Oto jak wygląda pierwsza strona oryginalnego (po lewej) i znaku wodnego (po prawej) pliku PDF:

- Cały proces jest taki sam, jak w przykładzie rotacji strony. Jedyna różnica to:
wmpageObj = add_watermark(mywatermark pdfReader.pages[page])
- Obiekt strony jest konwertowany na obiekt strony ze znakiem wodnym za pomocą dodaj_znak wodny() funkcjonować.
- Spróbujmy zrozumieć dodaj_znak wodny() funkcjonować:
reader = PdfReader(wmFile)
pageObj.merge_page(reader.pages[0])
return pageObj
- Przede wszystkim tworzymy obiekt czytnika PDF znak wodny.pdf . Do przekazanego obiektu strony używamy merge_page() funkcję i przekazać obiekt strony pierwszej strony obiektu czytnika PDF ze znakiem wodnym. Spowoduje to nałożenie znaku wodnego na przekazany obiekt strony.
I tu dochodzimy do końca tego długiego samouczka na temat pracy z plikami PDF w Pythonie.
Teraz możesz łatwo stworzyć własnego menedżera plików PDF!
Referencje:
- https://automatetheboringstuff.com/chapter13/
- https://pypi.org/project/pypdf/
Jeśli podoba Ci się GeeksforGeeks i chcesz wnieść swój wkład, możesz również napisać artykuł za pomocą write.geeksforgeeks.org lub wysłać swój artykuł na adres [email protected]. Zobacz swój artykuł pojawiający się na stronie głównej GeeksforGeeks i pomóż innym Geekom.
Napisz komentarz, jeśli znajdziesz coś nieprawidłowego lub jeśli chcesz podzielić się więcej informacjami na temat omówiony powyżej.