2017-01-18 10 views
0

Итак, мне было поручено создать pdf-файл, который позволяет конечному пользователю вводить информацию в PDF-файл и печатать или сохранять его либо или. Pdf, который я пытаюсь создать, обрабатывается из шаблона pdf, который имеет заполняемые поля. Проблема заключается в том, что каждый раз, когда я использую любую библиотеку python (pypdf2, pdfrw, reportlabs и т. Д.), Чтобы создать этот pdf-файл, он сглаживает его, и поля после заполнения не будут заполняться. Есть ли что-нибудь, что достигнет этой цели? Для меня это не имеет большого значения, если мне нужно взять файл с плоским шаблоном и отобразить на нем html-форму, если она работает. PDF был сделан в acrobat, и я убедился, что вы удалите пароль.Создать pdf с заполняемыми полями python

pdf в вопросе был создан в acrobat pro. Моя версия python - 2,7.

Если кто-то сделал это раньше, эта информация будет очень полезна. Благодаря!

ответ

0

Одиночная проблема. Как только выяснилось, формы в output.pdf не заполняются в okular или firefox, но все же могут заполняться при открытии в google-chrome или chromium-браузере.

Я использовал эти строки:

from PyPDF2 import PdfFileWriter, PdfFileReader 
from reportlab.pdfgen import canvas 

c = canvas.Canvas('watermark.pdf') 
c.drawImage('testplot.png', 350, 550, width=150, height=150) 
c.save() 

output_file = PdfFileWriter() 
watermark = PdfFileReader(open("watermark.pdf", 'rb')) 
input_file = PdfFileReader(file('template.pdf', 'rb')) 

page_count = input_file.getNumPages() 
for page_number in range(page_count): 
    print "Plotting png to {} of {}".format(page_number, page_count) 
    input_page = input_file.getPage(page_number) 
    input_page.mergePage(watermark.getPage(0)) 
    output_file.addPage(input_page) 

with open('output.pdf', 'wb') as outputStream: 
    output_file.write(outputStream)