web-dev-qa-db-fra.com

Création et écriture dans un fichier pdf en Python

Pourquoi ça ne marche pas? 

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

Le code fonctionne bien, mais le fichier .pdf ne peut pas être ouvert. Quelle est la différence entre un fichier texte normal et un fichier pdf? Que faire si je veux créer et écrire dans un fichier pdf en python?

9
John McIntyre Jr.

vous pouvez installer la bibliothèque fpdf puis:

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')

Quelle est la différence entre un fichier texte normal et un fichier PDF?

Un fichier PDF a un format spécifique. Vous pouvez en lire plus ici . Un texte est un fichier beaucoup plus simple. Ainsi, lorsque vous essayez d'ouvrir un fichier qui vous pense que c'est un PDF, mais qui n'a pas ce format, le fichier ne peut pas être ouvert.

Que faire si je veux créer et écrire dans un fichier pdf en python?

Vous devez utiliser un module tel que PyPDF2 , Reportlab ou FPDF . De plus, lisez Python PDF bibliothèque .

6
gsamaras

Chaque type de fichier a son propre format interne - un ensemble de règles indiquant ce qui doit être défini pour définir les informations qu’il est censé représenter. Généralement, l'extension de fichier ('.pdf' dans ce cas) est configurée pour vous indiquer le format interne utilisé par un fichier, mais il n'y a aucune garantie absolue à cet égard. 

Si vous écrivez une chaîne dans un fichier avec Python, le fichier contiendra exactement ce que vous y mettez, dans ce cas, seuls les cinq caractères ASCII H, e, l, l et o. Cela correspondrait au format normal d'un fichier texte. Donc, dans ce cas, vous avez créé un fichier texte mais vous y avez ajouté une extension ".pdf". Son format interne est toujours un fichier texte, et si vous le renommez 'fichier.txt', vous constaterez que vous pouvez l'ouvrir parfaitement (avec un éditeur de texte).

Si vous voulez créer un vrai fichier PDF (quelque chose avec le format interne correct pour un PDF), vous devez utiliser un package spécialisé capable de rédiger ce type de fichier. @gsamaras et @ rasmus-lyngdal-christensen ont donné de bonnes suggestions (Reportlab, PyPDF2 et fpdf).

2
Matthias Fripp