День добрый. Столкнулся с такой проблемой: нужно генерировать пдф файл с разными темплейтами для страниц. Имеется данный код:
self.line(self.data['sendr'], 10, 250,
250, {'min_font': 7, 'max_string': 70})
self.line(self.data['list_num'], 10, 450,
25, {'min_font': 7, 'max_string': 70})
self.line(self.data['send_date'], 10, 250,
45, {'min_font': 7, 'max_string': 70})
self.line(self.data['delivery_rate_sum_end'], 10, 450,
450, {'min_font': 7, 'max_string': 70})
self.can.save()
self.packet.seek(0)
new_pdf = PdfFileReader(self.packet)
current_folder = os.path.dirname(os.path.abspath(__file__))
existing_pdf = PdfFileReader(
file("{0}/original/blank_103_1.pdf".format(current_folder), "rb"))
output = PdfFileWriter()
page = existing_pdf.getPage(0)
page.mergePage(new_pdf.getPage(0))
output.addPage(page)
print "Page 1 complete"
# four row page mail part
for item in range(3, int(self.data['email_count']) - 2, 4):
self.line(self.data['sends'][item]['rcpn'], 10, 350,
250, {'min_font': 7, 'max_string': 70})
self.line(self.data['sends'][item]['mail_count'], 10, 450,
250)
new_pdf2 = PdfFileReader(self.packet)
existing_pdf2 = PdfFileReader(
file("{0}/original/blank_103_2.pdf".format(current_folder), "rb"))
page2 = existing_pdf2.getPage(0)
page2.mergePage(new_pdf2.getPage(0))
output.addPage(page2)
print "Page ", item, " complete"
# last page part
self.line(self.data['sendr'], 10, 100,
25, {'min_font': 7, 'max_string': 70})
self.line(self.data['list_num'], 10, 70,
45, {'min_font': 7, 'max_string': 70})
self.line(self.data['send_date'], 10, 150,
45, {'min_font': 7, 'max_string': 70})
self.line(self.data['delivery_rate_sum_end'], 10, 450,
450, {'min_font': 7, 'max_string': 70})
new_pdf1 = PdfFileReader(self.packet)
existing_pdf1 = PdfFileReader(
file("{0}/original/blank_103_4.pdf".format(current_folder), "rb"))
page1 = existing_pdf1.getPage(0)
page1.mergePage(new_pdf1.getPage(0))
output.addPage(page1)
print "Last page complete"
filename = int(time.time())
outputStream = file(
"{0}/pdf/f103/{1}.pdf".format(current_folder, filename), "wb")
output.write(outputStream)
outputStream.close()
Генерирует как надо темплейты, вот только данные почему то идут те, что на первой странице. Если же попытаться добавить
self.can.save()
self.packet.seek(0)
Перед каждой частью, полчаю ошибку ValueError: redefining named object: u'toUnicodeCMap:AAAAAA+ArialMT'. Если же поставить после каждой части self.packet.seek(0), и перед концом self.canvas.save()-все просто виснет. Кто-нибудь сталкивался с похожей проблемой? Использую pypdf и reportlab.