Python 3.8 x64 | Windows 10 x64 | reportlab v3.5.46 (с открытым исходным кодом)
Везде искал ответ на этот вопрос - безрезультатно. Я просто хочу создать PDF-документ, содержащий много текста. После того, как первая страница полностью заполнена текстом, оставшийся текст должен перетекать на вторую страницу. После того, как вторая страница полностью заполнена текстом, оставшийся текст должен перетекать на третью страницу (и так далее)...
Все ответы, которые я нахожу, ища по всему миру через Интернет, используют метод canvas.showPage()
. Это не лучшее решение, потому что во всех этих примерах первая страница не полностью заполнена текстом, поэтому это ручной метод добавления новой страницы. В моем примере я не знаю, когда первая страница будет заполнена текстом, поэтому я не знаю, когда мне нужно создать вторую или новую страницу, используя canvas.showPage()
.
Мне нужно каким-то образом определить, когда первая страница больше не может содержать текст, и когда это произойдет, создайте новую страницу для хранения оставшегося текста.
Прочитав документацию reportlabs, я не уверен, как добиться этого в практической реализации Python. Существуют также методы platypus.PageBreak()
и BaseDocTemplate.afterPage()
, но я не уверен, что они делают, потому что документация по этим методам скудна.
Я не думаю, что код, который я использую, будет полезен для моего вопроса, но он приведен ниже для справки. Параметр функции my_text
представляет собой многостраничный текст.
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.pagesizes import LETTER
from reportlab.lib.units import inch
def create_pdf_report_text_object(my_text):
canvas = Canvas('Test.pdf', pagesize=LETTER)
canvas.setFont('Helvetica', size=10)
text_object = canvas.beginText(x=1 * inch, y=10 * inch)
for line in my_text.splitlines(False):
text_object.textLine(line.rstrip())
canvas.drawText(text_object)
canvas.save()