Я думаю, проблема в том, как вы устанавливаете ширину ячейки. PyPDF по умолчанию размещает ячейки последовательно, начиная с крайнего правого угла ранее размещенной ячейки. Когда вы вызываете self.cell()
, первым аргументом является ширина - по умолчанию, если ширина равна 0, ширина расширяется до крайнего правого угла страницы. Поэтому, когда вы помещаете self.cell(0, 5, "Clinical Report: Confidential", 0, 0, 'L')
, это текстовое поле расширяется до правого края страницы. Затем, когда вы пытаетесь поместить self.cell(0, 5, page, 0, 0, 'C')
, он центрирует его в оставшемся месте на этой линии - но места не остается, поэтому он просто помещает его в конец. Попробуйте задать ширину вашей первой ячейки примерно так:
def footer(self):
genDateTime = "Report generated on: " + datetime.datetime.now().strftime('%m/%d/%Y %I:%M:%S %p')
page = 'Page ' + str(self.page_no()) + '/{nb}'
self.set_y(-10)
self.set_font('Arial', '', 9)
self.cell(5, 5, "Clinical Report: Confidential", 0, 0, 'L')
self.cell(0, 5, page, 0, 0, 'C')
self.cell(0, 5, genDateTime, 0, 0, 'R')
Возможно, вам придется увеличить ширину больше 5, чтобы отобразить весь текст, но вы можете поиграть с этим.