Source code for GUIBRUSHR.General_Constants.Classes.PDFViewer
import tkinter as tk
from tkinter.scrolledtext import ScrolledText
import fitz
[docs]
class PDFViewer(ScrolledText):
"""
Tkinter widget for displaying PDF files as rendered page images.
Inherits from ScrolledText and renders each PDF page as a PhotoImage.
"""
images = None
[docs]
def show(self, pdf_file):
"""
Render and display all pages of a PDF file.
Args:
pdf_file: Path to the PDF file to display.
"""
self.delete("1.0", "end") # clear current content
pdf = fitz.open(pdf_file) # open the PDF file
self.images = [] # for storing the page images
for page in pdf:
pix = page.get_pixmap()
pix1 = fitz.Pixmap(pix, 0) if pix.alpha else pix
photo = tk.PhotoImage(data=pix1.tobytes("ppm"))
# insert into the text box
self.image_create("end", image=photo)
self.insert("end", "\n")
# save the image to avoid garbage collected
self.images.append(photo)