Wie füge ich PDF in Tkinter GUI Python hinzu?
In diesem Artikel erfahren Sie, wie Sie PDF-Dateien in der Tkinter-GUI anzeigen. Wir werden die PyMuPDF-Bibliothek verwenden, um die PDF-Datei zu lesen und in ein Bild zu konvertieren, und dann Tkinter verwenden, um das Bild anzuzeigen.
Für unsere Aufgabe werden wir die folgenden Schritte ausführen -
PDF-Dateien lesen.
Definieren Sie eine Transformationsmatrix, die auf die PDF-Seite angewendet werden soll, um das Bild zu erhalten.
Berechnen Sie die Gesamtseitenzahl für die Fehlerprüfung.
Definieren Sie den Bildschirm (Canvas) der GUI.
Definieren Sie eine Hilfsfunktion zum Konvertieren von PDF-Seiten in PIL-Bilder.
Definieren Sie eine Funktion zum Anzeigen des Seitenbilds in der GUI.
Fügen Sie Schaltflächen, Beschriftungen, Bildlaufleisten usw. hinzu und konfigurieren Sie sie.
Zuerst führen wir zunächst den folgenden Befehl im Terminal aus, um das PyMuPDF-Paket zu installieren.
python -m pip install --upgrade pip python -m pip install --upgrade pymupdf
Jetzt müssen wir die Bibliotheken importieren, die wir verwenden werden. Fitz importieren
import fitz from tkinter import * from PIL import Image, ImageTk
Hier handelt es sich um eine Hilfsbibliothek, die mit der PyMuPDF-Bibliothek bereitgestellt wird, um PDF-Seiten als Bilder zu erhalten.
Wir verwenden zunächst die Funktion fitz.open, um die PDF-Datei zu öffnen, die in der GUI angezeigt werden soll. Dadurch wird ein Dokumentobjekt zurückgegeben, mit dem auf die Seite zugegriffen werden kann.
# open pdf file file_name = "sample.pdf" doc = fitz.open(file_name)
Jetzt müssen wir angeben, wie die Seite angezeigt werden soll. Durch die Definition der Matrixfunktion unten können wir „fittun“, um eine 1x-Skalierung beizubehalten.
# transformation matrix we can apply on pages zoom = 1 mat = fitz.Matrix(zoom, zoom)
Lassen Sie uns auch die Anzahl der Seiten zählen –
# count number of pages num_pages = 0 for p in doc: num_pages += 1
Jetzt definieren wir einen Bildschirm, fügen unserem Code eine Bildlaufleiste und eine Leinwand hinzu -
# initialize and set screen size root = Tk() root.geometry('750x700') # add scroll bar scrollbar = Scrollbar(root) scrollbar.pack(side = RIGHT, fill = Y) # add canvas canvas = Canvas(root, yscrollcommand = scrollbar.set) canvas.pack(side = LEFT, fill = BOTH, expand = 1)
Hier wird unser Bildschirm durch den Namen „root“ dargestellt und hat die Abmessungen 750x700. Wir haben auch eine Bildlaufleiste hinzugefügt und festgelegt, dass sie sich rechts befindet und die gesamte Höhe ausfüllt. Auch hier fügen wir die Leinwand links hinzu und füllen den gesamten Bildschirm auf beiden Seiten aus!
Um die Seitenzahl zu erhalten, die der Benutzer lesen möchte, benötigen wir die Seitenzahl als Eingabe. Wir schaffen das –
# define entry point (field for taking inputs) entry = Entry(root)
# add a label for the entry point label = Label(root, text="Enter page number to display:")
Der Parameter „root“ sagt uns, dass diese Objekte mit dem Bildschirm „root“ verknüpft werden.
Jetzt definieren wir eine Hilfsfunktion, um das Bild der PDF-Datei aus der Seitenzahl zu ermitteln.
def pdf_to_img(page_num): page = doc.load_page(page_num) pix = page.get_pixmap(matrix=mat) return Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
Hier laden wir zunächst die Seite mit doc.load_page und übergeben die Seitenzahl als Parameter. Anschließend konvertieren wir die PDF-Seite, um die Pixeldarstellung der Seite in der zweiten Zeile zu erhalten. Schließlich konvertieren wir die Pixeldarstellung in das PIL-Bildformat.
Jetzt definieren wir eine Funktion show_image, um Bilder in der Tkinter-GUI anzuzeigen.
def show_image(): try: page_num = int(entry.get()) - 1 assert page_num >= 0 and page_num < num_pages im = pdf_to_img(page_num) img_tk = ImageTk.PhotoImage(im) frame = Frame(canvas) panel = Label(frame, image=img_tk) panel.pack(side="bottom", fill="both", expand="yes") frame.image = img_tk canvas.create_window(0, 0, anchor='nw', window=frame) frame.update_idletasks() canvas.config(scrollregion=canvas.bbox("all")) except: pass
Zuerst lesen wir die Seitenzahl vom zuvor definierten Einstiegspunkt und wandeln sie in eine Ganzzahl um. Wenn es sich nicht um eine gültige Ganzzahl handelt, tritt eine Ausnahme auf und der Ausnahmeblock behandelt sie. Anschließend prüfen wir, ob die Seitenzahl zwischen 0 und Seitenzahl liegt, da dies der einzige gültige Seitenbereich ist, den wir anzeigen können. Mithilfe der zuvor definierten Hilfsfunktion erhalten wir dann das PIL-Bild der vom Benutzer angegebenen Seite. Anschließend richten wir Rahmen, Panel und Leinwand ein, um das Bild korrekt anzuzeigen.
Als nächstes fügen wir eine Schaltfläche hinzu, um die Seite anzuzeigen. Wir übergeben die Funktion „show_image“ als Befehl. Bei jedem Tastendruck wird also die Funktion „show_image“ aufgerufen.
# add button to display pages button = Button(root, text="Show Page", command=show_image)
Jetzt legen wir die visuelle Position der verschiedenen Komponenten fest, die wir zuvor definiert haben –
# set visual locations label.pack(side=TOP, fill=None) entry.pack(side=TOP, fill=BOTH) button.pack(side=TOP, fill=None)
Wir legen die Startseite auch wie folgt als erste Seite des PDFs fest:
entry.insert(0, '1') show_image()
Wir konfigurieren die Bildlaufleiste
scrollbar.config(command = canvas.yview) root.mainloop()
Abschließend schließen wir das PDF, um zu verhindern, dass es von unserem Computer beschädigt wird.
doc.close()
Ausgabe
Nach dem Ausführen des Programms sehen wir die folgende Ausgabe!

Fazit
In diesem Artikel lernen wir, wie man PDF-Dateien in der Tkinter-GUI mithilfe der PyMuPDF-Bibliothek zusammen mit Pillow und Tkinter anzeigt. Wir haben auch gelernt, wie man Seiten zählt, PDF-Seiten in Bilder umwandelt, interaktive Schaltflächen erstellt und wie man die verschiedenen Elemente, aus denen eine GUI besteht, visuell platziert.
Das obige ist der detaillierte Inhalt vonWie füge ich PDF in Tkinter GUI Python hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Fastapi ...

Verwenden Sie Python im Linux -Terminal ...

Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...
