Почему это не работает:

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

Код работает нормально, но файл .pdf открыть нельзя. В чем разница между обычным текстовым файлом и pdf? Что делать, если я хочу создать и записать в pdf файл на python?

11
user8471763 30 Авг 2017 в 09:48

3 ответа

Лучший ответ

Вы можете установить библиотеку fpdf и затем:

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')
18
Rasmus Lyngdal-Christensen 30 Авг 2017 в 06:58

Каждый тип файла имеет свой внутренний формат - набор правил о том, что должно идти, куда определять информацию, которую он должен представлять. Обычно расширение файла (в данном случае «.pdf») задает, какой внутренний формат используется в файле, но абсолютной гарантии этого нет.

Если вы напишите строку в файл с помощью Python, файл будет содержать именно то, что вы в него вставили, в данном случае только пять символов ASCII H, e, l, l и o. Это будет соответствовать обычному формату для текстового файла. Итак, в этом случае вы создали текстовый файл, но добавили к нему расширение «.pdf». Его внутренним форматом по-прежнему является текстовый файл, и если вы переименуете его в «file.txt», вы обнаружите, что можете открыть его очень хорошо (с помощью текстового редактора).

Если вы хотите создать настоящий файл PDF (что-то с правильным внутренним форматом для PDF), вам нужно будет использовать специализированный пакет, который может записать этот тип файла. @gsamaras и @ rasmus-lyngdal-christensen дали несколько хороших предложений (Reportlab, PyPDF2 и fpdf).

2
Matthias Fripp 30 Авг 2017 в 07:10

В чем разница между обычным текстовым файлом и pdf?

Файл PDF имеет определенный формат. Вы можете прочитать больше здесь. Текст - это гораздо более простой файл, поэтому, когда вы пытаетесь открыть файл, который вы думаете, что это PDF, но не имеет этого формата, файл не может быть открыт.

Что делать, если я хочу создать и записать в pdf файл на python?

Вам необходимо использовать модуль, например PyPDF2, Reportlab или FPDF. Кроме того, прочитайте библиотеку Python PDF.

6
gsamaras 30 Авг 2017 в 06:56