wake-up-neo.net

Erstellen und Schreiben einer PDF-Datei in Python

Warum funktioniert das nicht: 

with open('file.pdf', 'w') as outfile:
    outfile.write("Hello")

Der Code funktioniert einwandfrei, aber die PDF-Datei kann nicht geöffnet werden. Was ist der Unterschied zwischen einer normalen Textdatei und einem PDF-Dokument?

9

sie könnten die Fpdf-Bibliothek installieren und dann:

from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_xy(0, 0)
pdf.set_font('arial', 'B', 13.0)
pdf.cell(ln=0, h=5.0, align='L', w=0, txt="Hello", border=0)
pdf.output('test.pdf', 'F')

Was ist der Unterschied zwischen einer normalen Textdatei und einem PDF?

Eine PDF -Datei hat ein bestimmtes Format. Sie können mehr hier lesen. Ein Text ist eine wesentlich einfachere Datei. Wenn Sie also versuchen, eine Datei zu öffnen, die you für eine PDF-Datei hält, dieses Format jedoch nicht aufweist, kann die Datei nicht geöffnet werden.

Was ist zu tun, wenn ich eine PDF-Datei in Python erstellen und schreiben möchte?

Sie müssen ein Modul wie PyPDF2 , Reportlab oder FPDF verwenden. Lesen Sie außerdem die - Python PDF -Bibliothek .

6
gsamaras

Jeder Dateityp hat ein eigenes internes Format - eine Reihe von Regeln darüber, was wohin gehen soll, um die Informationen zu definieren, die er repräsentieren soll. Normalerweise sagt die Dateierweiterung (in diesem Fall '.pdf'), welches interne Format eine Datei verwendet. Dies kann jedoch nicht garantiert werden. 

Wenn Sie mit Python einen String in eine Datei schreiben, enthält die Datei genau das, was Sie eingefügt haben, in diesem Fall nur die fünf ASCII - Zeichen H, e, l, l und o. Das würde dem normalen Format einer Textdatei entsprechen. In diesem Fall haben Sie eine Textdatei erstellt, aber die Erweiterung ".pdf" hinzugefügt. Sein internes Format ist immer noch eine Textdatei, und wenn Sie sie in 'file.txt' umbenennen, können Sie sie problemlos (mit einem Texteditor) öffnen.

Wenn Sie eine echte PDF -Datei erstellen möchten (etwas mit dem richtigen internen Format für eine PDF-Datei), müssen Sie ein spezielles Paket verwenden, das diesen Dateityp schreiben kann. @gsamaras und @ rasmus-lyngdal-christensen gaben einige gute Vorschläge (Reportlab, PyPDF2 und fpdf).

2
Matthias Fripp