Запись строки в PDF с помощью PyPDF2

#python-3.x #pdf

#python-3.x #PDF

Вопрос:

Я прочитаю более 130 файлов Excel в виде строк строк на Python. Я хочу записать каждую строку в PDF. Весь файл Excel представляет собой всего 1 альбомный лист формата А5. Я могу легко печатать PDF-файлы в командной оболочке.

Я импортирую PyPDF2

Я могу создать PDF или серию PDF-файлов с:

 with open(path   fileName, 'wb') as out:
        pdf_writer.write(out)
  

но я слишком туп, чтобы понять, как записать строку в этот PDF. Если я пытаюсь записать строковую переменную, я просто получаю ошибки. Если я преобразую строку в байты, я просто получаю ошибки.

Как мне вставить строку в мой PDF-файл?

string = ‘любая старая строка’

Комментарии:

1. Из документации: pythonhosted.org/PyPDF2/PdfFileWriter.html класс PyPDF2.PdfFileWriter — этот класс поддерживает запись файлов PDF с учетом страниц, созданных другим классом (обычно PdfFileReader).

2. Если бы я только мог это понять! Я читал это весь день! Я могу легко создавать и записывать текстовые файлы, но PDF-файлы ускользают от меня!

Ответ №1:

Я знаю, что вы просили PyPDF2 , но более простой подход с FPDF :

 # https://pyfpdf.readthedocs.io/en/latest/
import fpdf #pip3 intall fpdf

pdf = fpdf.FPDF(format='letter') #pdf format
pdf.add_page() #create new page
pdf.set_font("Arial", size=12) # font and textsize
pdf.cell(200, 10, txt="your text", ln=1, align="L")
pdf.cell(200, 10, txt="your text", ln=2, align="L")
pdf.cell(200, 10, txt="your text", ln=3, align="L")
pdf.output("test.pdf")
  

Как вы упомянули, вы не понимаете, pyPdf doc так хорошо, что я думаю FPDF , это хорошее начало.

PyPDF2 больше подходит для чтения и объединения файлов pdf.

Если вам действительно нравится использовать PyPDF2, вы могли бы создать текст canvas .

Комментарии:

1. Спасибо, я получу fpdf! Выглядит просто! Мне нужен простой!

Ответ №2:

PyPDF2 это очень хороший выбор, когда вам нужно изменить существующие PDF-файлы, но для этого требуется знание формата PDF, когда вам нужно создать PDF с нуля.

Вы можете рассмотреть возможность использования другой библиотеки для этой задачи, т.е. pdfkit (https://github.com/JazzCore/python-pdfkit ), примерная программа:

 import pdfkit

pdfkit.from_url('http://google.com', 'out.pdf')
pdfkit.from_file('test.html', 'out.pdf')
pdfkit.from_string('Hello!', 'out.pdf')
  

Комментарии:

1. Спасибо, я попробую это! С другой стороны, запись строки в PDF не может быть ракетостроением. Если я смогу сделать это 1 раз с помощью Pypdf2, тогда я буду знать. Есть ли у вас эти «более глубокие знания»?

2. Посмотрите на формат PDF en.wikipedia.org/wiki/PDF . Вы можете создать страницу, преобразовать ее в stream и записать с помощью PdfFileWriter, и это тоже будет работать.