pdf Qualität tkdocview

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

Ich möchte gern "tkdocview" zu anzeige von "pdf" Dateien in tkinter nutzen soweit funktioniert es auch nur die Qualität ist nicht so gut!

Der Code von der "tkdocview" Seite sieht so aus, nur als beispiel! In dieser wird ja die pdf kompremiert und dadurch ist die Qualität nicht so gut.

Code: Alles auswählen

from tkinter import *
from tkdocviewer import *

# Create a root window
root = Tk()

# Create a DocViewer widget
v = DocViewer(root)
v.pack(side="top", expand=1, fill="both")

# Display some document
v.display_file("example.pdf")

# Start Tk's event loop
root.mainloop()
in dem package von "tkdocview" habe ich die "Ghostscript.py" gefunden und mir angeschaut und dieses gefunden!

Code: Alles auswählen

    def render_page(self, page_num):
        """Render the specified page of the input file."""

        base, ext = os.path.splitext(self.input_path)
        if ext.lower() != ".pdf":
            raise BackendError("Only PDF files are supported.")

        # Resolution for Ghostscript rendering
        if PIL and self.enable_downscaling:
            gs_res = hr_dpi
        else:
            gs_res = gs_dpi

        # Ghostscript command line
        gs_args = [gs_exe,
                   "-q",
                   "-r{0}".format(gs_res),
                   "-dBATCH",
                   "-dNOPAUSE",
                   "-dNOSAFER",
                   "-dPDFSettings=/SCREEN",
                   "-dPrinted=false",
                   "-dTextAlphaBits=4",
                   "-dGraphicsAlphaBits=4",
                   "-dCOLORSCREEN",
                   "-dDOINTERPOLATE",

                   # Newer versions of Ghostscript support the -sPageList
                   # option, but our user's version might not have it.
                   # This approach is clumsier, but backwards-compatible.
                   "-dFirstPage={0}".format(page_num),
                   "-dLastPage={0}".format(page_num),

                   # Raw PPM is the only full-color image format that all
                   # versions of Tk are guaranteed to support.
                   "-sDEVICE=ppmraw",
                   "-sOutputFile=-",
                   self.input_path]

        # Call Ghostscript to render the PDF
        image_data = self._check_output(gs_args)

        if PIL and self.enable_downscaling:
            page_bytes = io.BytesIO(image_data)
            page_image = PIL.Image.open(page_bytes)

            # Scale down the output from Ghostscript
            w, h = page_image.size
            return page_image.resize((w * gs_dpi // hr_dpi,
                                      h * gs_dpi // hr_dpi),
                                     resample=PIL.Image.BICUBIC)

        else:
            # Return the image data from Ghostscript directly
            return image_data
            
wie bekomme ich diese befehle in meine .py datei!?
Wenn ich in der Gostscript.py diesen bereich ändere

Code: Alles auswählen

  if PIL and self.enable_downscaling:
            gs_res = hr_dpi
        else:
            gs_res = gs_dpi #<- in hr_dpi
  
und meine .py starte wird die pdf in voller Auflösung angezeigt.

Ziel für mich sollte sein die .pdf in einer vorgegebene von mir vorgegebene Auflösung zu rendern!

Danke!
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Streifenhase1: Statt die Bibliothek zu ändern solltest Du einfach dafür sorgen das die ``if``-Bedingung erfüllt ist, dann brauchst Du an dem Code nichts ändern. Also Pillow installieren damit `PIL` wahr wird und in die Dokumentation zum `DocViewer` schauen was der so an Argumenten beim erstellen kennt.

Edit: Hinweis von der Projekthomepage:
Development Status

tkDocViewer is deprecated. If PDF support is important to your project, please use a better toolkit than Tk.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

Pillow ist installiert und importiert...

Komme trotzdem nicht mit der Bibliothek klar...

Auch wenn es veraltet ist würde es für meine Zwecke reichen....

Oder was währe denn eine bessere Alternative für tkinter?
Antworten