Dictionary als .pdf abspeichern

Fragen zu Tkinter.
Antworten
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Hallo :D
Ich möchte mittels tkinter und filedialog ein Dictionary als pdf abspeichern.

Code: Alles auswählen

import tkinter as tk
from tkinter import filedialog

def buttonSaveData():
 
    file = filedialog.asksaveasfile(title="Save As...", mode='w', defaultextension=".pdf", filetypes =[("Portable Document Format","*.pdf")])
    
    #  asksaveasfile return `None` if dialog closed with "cancel". 
    if file is None:
         return

    else:
        for row_index, key in enumerate(save_data):
            file.write('\n {}: {}'.format(key, save_data[key]))
    
    file.close()
Wenn ich das so über einen tk.Button ausführe funktioniert das auch. Öffne ich dann aber die pdf-Datei erhalte ich einen Fehler.

Code: Alles auswählen

Dokument ... konnte nicht geöffnet werden
Der Dateityp Einfaches Textdokument (text/plain) wird nicht unterstützt
Ich verstehe den Fehler und wenn ich die Datei als txt-File speichere kann ich es auch öffnen. Wie bekommt das jetzt aber für pdf-Files hin?
Benutzeravatar
sparrow
User
Beiträge: 4503
Registriert: Freitag 17. April 2009, 10:28

Aber du weißt schon, dass eine Datei nicht einfach zu einer PDF-Datei wird, nur weil man sie .pdf nennt?
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo Ede1994 ,

tk.Canvas hat eine postscript Methode.
schau mal hier:https://anzeljg.github.io/rin2/book2/24 ... thods.html
Gruss
Peter
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

sparrow hat geschrieben: Dienstag 8. September 2020, 13:44 Aber du weißt schon, dass eine Datei nicht einfach zu einer PDF-Datei wird, nur weil man sie .pdf nennt?
Ja, dass ist mir klar. Weshalb ich auch weiß, warum ich die Datei nicht öffnen kann. Ich wollte wissen, wie man meinen Code verändern muss, damit es geht.
peterpy hat geschrieben: Dienstag 8. September 2020, 14:45 tk.Canvas hat eine postscript Methode.
schau mal hier:https://anzeljg.github.io/rin2/book2/24 ... thods.html
Danke. Schau ich mir mal an.
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du weißt, dass das nicht geht, dann ist die Frage seltsam gestellt. Und dass das über tkinter geht, ist doch für Deine Frage auch völlig irrelevant. save_data kommt aus dem nichts, das sollte eine Parameter der Funktion sein. Das Zeileende-Zeichen \n steht, wie der Name schon sagt am ENDE jeder Zeile.
Zum Schreiben von PDF-Dateien gibt es viele Pakete, z.B. reportlab, weasyprint, ...
Count
User
Beiträge: 28
Registriert: Donnerstag 28. November 2019, 12:56

mit FPDF kann man PDF's recht einfach erstellen
das "asksaveasfile" ist eher für den Speicherort gedacht
Antworten