So arbeiten Sie mit PDF-Dateien in Python für Programmieranfänger • BUOM
Veröffentlicht am 6. Juni 2022
Python ist ein intuitives Programmiertool, das eine Vielzahl von Funktionen bietet, die Entwicklern beim Schreiben und Bearbeiten von Code helfen. Beim Programmieren in Python können Sie verschiedene Bibliotheken und Funktionen nutzen, um PDF-Dateien anzupassen, beispielsweise Wasserzeichen und das Hervorheben von Abschnitten des Dokuments. Das Erlernen dieser Änderungstechniken kann Ihnen dabei helfen, Dateien an Ihre spezifischen Bedürfnisse und Anforderungen anzupassen.
In diesem Artikel besprechen wir neun Möglichkeiten zur Verwendung von PDFs in Python, die Ihnen dabei helfen, Ihre Programmierkenntnisse für Ihre Karriere zu verbessern.
So arbeiten Sie mit PDF-Dateien in Python
Hier sind neun einzigartige Möglichkeiten, mit PDF-Dateien in Python zu arbeiten:
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
1. Text extrahieren und hinzufügen
Um Text aus Python zu extrahieren, installieren Sie PDFMiner, indem Sie den Befehl „pip install pdfminer.six“ ausführen. Sobald die Bibliothek installiert ist, können Sie Text aus PDF hinzufügen und extrahieren. Hier ist ein Beispiel, das die Syntax zum Extrahieren von Text aus PDF in Python mithilfe dieser Bibliothek zeigt:
aus io StringIO importieren
aus pdfminer.pdfinterp importieren PDFPageInterpreter, PDFResourceManager
aus pdfminer.pdfpage PDFPage importieren
aus pdfminer.converter TextConverter importieren
aus pdfminer.layout LAParams importieren
# Analysator PDFMiner
rsrcmgr = PDFResourceManager()
sio = StringIO()
Codec = „utf-8“
Laparams = LAParams()
Gerät = TextConverter (rsrcmgr, sio, Codec = Codec, Laparams = Laparams)
interpreter = PDFPageInterpreter(rsrcmgr, Gerät)
# Pfad zu unserer Eingabedatei
pdf_file = „form.pdf“
# Text extrahieren
pdfFile = open(pdf_file, „rb“)
für eine Seite in PDFPage.get_pages(pdfFile):
interpreter.process_page(page)
fp.close()
# Text von StringIO zurückgeben
text = sio.getvalue()
drucken (Text)
#Befreiung
device.close()
sio.close()
Hier ist eine Beispielsyntax zum Hinzufügen von Text zu einer PDF-Datei:
aus reportlab.lib.pagesizes LETTER importieren
aus reportlab.lib.units Import Zoll
aus reportlab.pdfgen.canvas Canvas-Import
aus reportlab.lib.colors Import Rot
# PDF-Datei erstellen
Canvas = Canvas(„text_file.pdf“, Seitengröße=LETTER)
# Schriftart und Schriftgröße festlegen
canvas.setFont(“Courier”, 16)
# Setze die Schriftfarbe auf Rot
canvas.setFillColor(rot)
# Schreiben Sie diesen Text in eine PDF-Datei
canvas.drawString(2 * Zoll, 8 * Zoll, „Dies ist ein neu erstelltes Python-PDF.“)
canvas.save()
2. Seiten drehen
PDF-Seiten können entweder im Quer- oder Hochformat vorliegen. Manchmal können Seiten auf dem Kopf stehen, was passieren kann, wenn jemand ein Dokument scannt und in eine PDF-Datei oder E-Mail umwandelt. Um PDF-Seiten zu drehen, installieren Sie die PyPDF2-Bibliothek, indem Sie den Befehl „pip install pypdf2“ eingeben. Hier ist ein Syntaxbeispiel, das zeigt, wie Seiten mithilfe dieser Bibliothek richtig gedreht werden:
# rotate_pages.py
aus PyPDF2 PdfFileReader, PdfFileWriter importieren
Definieren Sie rotation_pages (pdf_path):
pdf_writer = PdfFileWriter()
pdf_reader = PdfFileReader (pdf_path)
# Seite um 90 Grad nach rechts drehen
page_1 = pdf_reader.getPage(0).rotateClockwise(90)
pdf_writer.addPage (Seite_1)
# Seite um 90 Grad nach links drehen
page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90)
pdf_writer.addPage (Seite_2)
# Fügen Sie eine Seite in normaler Ausrichtung hinzu
pdf_writer.addPage(pdf_reader.getPage(2))
mit open(‘rotate_pages.pdf’, ‘wb’) wie fh:
pdf_writer.write(fh)
if __name__ == ‘__main__’:
path = ‘Jupyter_Notebook_An_Introduction.pdf’
rotate_pages(Pfad)
3. PDFs zusammenführen
Es gibt verschiedene Umstände, unter denen Sie mehrere PDFs zu einem einzigen PDF kombinieren möchten. Sie können beispielsweise ein Standard-Deckblatt mit verschiedenen PDF-Berichten kombinieren. Mit Python können Sie diese Aufgabe mithilfe der Funktion „merge_pdfs()“ ausführen. Hier ist ein Beispiel für die Syntax dieser Funktion:
# pdf_merging.py
aus PyPDF2 PdfFileReader, PdfFileWriter importieren
def merge_pdfs(Pfade, Ausgabe):
pdf_writer = PdfFileWriter()
für einen Pfad in Pfaden:
pdf_reader = PdfFileReader (veröffentlichen)
für Seite im Bereich (pdf_reader.getNumPages()):
# Fügen Sie jede Seite zum Post-Objekt hinzu
pdf_writer.addPage(pdf_reader.getPage(page))
# Zusammengeführtes PDF schreiben
mit open(output, ‘wb’) als Ausgabe:
pdf_writer.write(beendet)
if __name__ == ‘__main__’:
paths = (‘document1.pdf’, ‘document2.pdf’)
merge_pdfs(Pfade, Ausgabe=’merged.pdf’)
4. Teilen Sie PDFs
Anstatt PDFs zusammenzuführen, können Sie ein Dokument in mehrere PDFs aufteilen. Diese Aktion ist nützlich, wenn Sie verschiedene PDF-Dateien erstellen möchten, um eine große Menge an Informationen oder Inhalten zu teilen. Hier ist ein Syntaxbeispiel, das zeigt, wie PDF-Dateien mithilfe der PyPDF2-Bibliothek aufgeteilt werden:
# pdf_splitting.py
aus PyPDF2 PdfFileReader, PdfFileWriter importieren
def split (übertragen, name_of_split):
pdf = PdfFileReader (Pfad)
für Seite im Bereich (pdf.getNumPages()):
pdf_writer = PdfFileWriter()
pdf_writer.addPage(pdf.getPage(page))
Ausgabe = f'{name_of_split}{Seite}.pdf’
mit open(output, ‘wb’) als output_pdf:
pdf_writer.write(output_pdf)
if __name__ == ‘__main__’:
path = ‘Jupyter_Notebook_An_Introduction.pdf’
split(path, ‘jupyter_page’)
5. Fügen Sie Wasserzeichen hinzu
Wasserzeichen sind Muster und Bilder, die Sie Dokumentseiten hinzufügen, um sie erkennbar zu machen. Sie können Wasserzeichen mit der Funktion „create_watermark“ hinzufügen. Diese Funktion benötigt drei Argumente, darunter „input_pdf“ für den Pfad zu der Datei, die Sie mit einem Wasserzeichen versehen möchten, „output“ für den Pfad, in dem Sie die mit Wasserzeichen versehene Version der PDF-Datei speichern möchten, und das Wasserzeichenbild oder den Wasserzeichentext selbst. Hier ist eine Beispielsyntax:
# pdf_watermarker.py
aus PyPDF2 PdfFileWriter, PdfFileReader importieren
def create_watermark(input_pdf, Ausgabe, Wasserzeichen):
watermark_obj = PdfFileReader(Wasserzeichen)
Watermark_page = Watermark_obj.getPage(0)
pdf_reader = PdfFileReader (input_pdf)
pdf_writer = PdfFileWriter()
# Wasserzeichen auf allen Seiten
für Seite im Bereich (pdf_reader.getNumPages()):
page = pdf_reader.getPage(page)
page.mergePage(watermark_page)
pdf_writer.addPage(Seite)
mit open(output, ‘wb’) als Ausgabe:
pdf_writer.write(beendet)
if __name__ == ‘__main__’:
create_watermark(
input_pdf=’Jupyter_Notebook_An_Introduction.pdf’,
Ausgabe = ‘watermarked_notebook.pdf’,
wasserzeichen=’watermark.pdf’)
6. Verschlüsseln Sie das PDF
Mit der PyPDF2-Bibliothek können Sie eine PDF-Datei mit einem Passwort verschlüsseln. Während Sie für ein Dokument keine Berechtigungen festlegen können, können Sie ein Besitzerkennwort hinzufügen und sich selbst Administratorrechte für das gesamte PDF erteilen. Hier ist ein Beispiel für die Syntax mit den Funktionen „add_encryption“ und „.encrypt()“:
# pdf_encrypt.py
aus PyPDF2 PdfFileWriter, PdfFileReader importieren
def add_encryption (input_pdf, output_pdf, parol):
pdf_writer = PdfFileWriter()
pdf_reader = PdfFileReader (input_pdf)
für Seite im Bereich (pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(page))
pdf_writer.encrypt (user_pwd = parol,owner_pwd = nicht,
use_128bit = True)
mit open(output_pdf, ‘wb’) wie fh:
pdf_writer.write(fh)
if __name__ == ‘__main__’:
add_encryption(input_pdf=’reportlab-sample.pdf’,
Output_pdf=’reportlab-encrypted.pdf’,
Passwort=’zwei Fische’
7. Bilder extrahieren und hinzufügen
Mit den Bibliotheken PyMuPDF und Fitz können Sie Bilder aus einer PDF-Datei extrahieren. Sie können diese Bibliotheken installieren, indem Sie „pip install pymupdf“ und „pip install fitz“ in die Befehlszeile eingeben. Hier ist eine Beispielsyntax, die zeigt, wie Bilder extrahiert werden:
# PiMuPDF
Fitz importieren
io importieren
aus PIL-Importbild
# Pfad zu unserer Eingabedatei
pdf_file = „form.pdf“
# PDF-Datei eingeben
pdf_file = fitz.open(pdf_file)
für page_no in range(len(pdf_file)):
curr_page = pdf_page(page_no)
Bilder = curr_page.getImageList()
für image_no, Bild in enum (curr_page.getImageList()):
# XREF-Bilder abrufen
externer Link = Bild(0)
# Bildbytes extrahieren
curr_image = pdf_file.extractImage(externer Link)
img_bytes = current_image(“image”)
# Bilderweiterung abrufen
img_extension = current_image(“ext”)
# lade es in PIL
image = Image.open(io.BytesIO(img_bytes))
# Auf lokaler Festplatte speichern
image.save(open(f“page{page_no+1}_img{image_no}. {img_extension}“, „wb“))
Hier ist eine Beispielsyntax zum Hinzufügen eines Bildes zu einer PDF-Datei:
aus reportlab.lib.pagesizes LETTER importieren
aus reportlab.pdfgen.canvas Canvas-Import
Canvas = Canvas(„add_image.pdf“, Seitengröße=LETTER)
canvas.drawInlineImage(“x.jpeg”, 100, 450)
canvas.save()
8. URLs extrahieren
Wenn Sie URLs aus einer PDF-Datei extrahieren möchten, bietet Python die pdfx-Bibliothek, die Sie für diese Aufgabe verwenden können. Installieren Sie das pdfx-Modul, indem Sie den Befehl „pip install pdfx“ eingeben. Sobald die Bibliothek installiert ist, können Sie mit dem Extrahieren beginnen. Hier ist eine Beispielsyntax, die zeigt, wie URLs extrahiert werden:
pdfx importieren
# PDF-Datei lesen
pdf = pdfx.PDFx(“template.pdf”)
# Holen Sie sich eine Liste von URLs
lesen (pdf.get_references_as_dict())
9. Text auswählen
Um Text in einer PDF-Datei hervorzuheben, laden Sie die Fitz-Bibliothek herunter, die Ihnen bei der Erledigung der Aufgabe hilft. Sobald die Fitz-Bibliothek installiert ist, können Sie loslegen. Hier ist eine Beispielsyntax, die zeigt, wie Text hervorgehoben wird:
Fitz importieren
# PDF-Datei öffnen
pdf_file = fitz.open(“sample.pdf”)
# Geben Sie den Text ein, der hervorgehoben werden soll
text = „Empfehlenswert“
# Durch die Seiten blättern, um den eingegebenen Satz hervorzuheben
für eine Seite in pdf_file:
match_words = page.searchFor(text)
für ein Wort in match_words:
Highlight = page.addHighlightAnnot(word)
hervorheben.update()
# PDF-Datei unter „selection.pdf“ speichern
pdf_file.save(“ausgewählt.pdf”)
Bitte beachten Sie, dass das in diesem Artikel erwähnte Unternehmen nicht mit Indeed verbunden ist.