如何在使用xhtml2pdf / pisa时获得可编辑的字段(表单字段)?

时间:2016-01-19 21:33:55

标签: html django pdf pisa xhtml2pdf

我正在尝试创建一个将html文件转换为pdf的django项目。我正在使用xhtml2pdf,特别是pisa。我可以获得pdf,但pdf中没有表单字段。在我的视图中,我有一个包含以下代码的方法:

views.py

from django.template.loader import get_template
from django.template import Context
from django.views.generic import TemplateView
from xhtml2pdf import pisa
from django.http import HttpResponse
from api.models import Api

def MyPDF(request):
 nameOfFormToDisplay = request.POST['nameOfFormToDisplay']
 current_number_to_use = Api.objects.filter(formName=nameOfFormToDisplay)[0].currentNumberToUse
 current_date_to_use = Api.objects.filter(formName=nameOfFormToDisplay)[0].currentDate
 currentApiSelected = Api.objects.filter(formName=nameOfFormToDisplay)[0]
 currentApiSelected.currentNumberToUse = current_number_to_use +1
 currentApiSelected.save()

 templateString = (nameOfFormToDisplay + ".html")
 template = get_template(templateString)
 myContextObject = {'incrementingNumber': current_number_to_use, 'currentDate':current_date_to_use}
 html = template.render(Context(myContextObject))

 file = open('test.pdf', "w+b")
 pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=file, encoding='utf-8')

 file.seek(0)
 pdf = file.read()
 file.close()

 return HttpResponse(pdf, 'application/pdf')

pip freeze:

Django==1.8.7
django-easy-pdf==0.1.0
django-wkhtmltopdf==3.0.0
djangorestframework==3.3.1
html5lib==0.9999999
pep8==1.6.2
Pillow==2.9.0
psycopg2==2.6.1
PyPDF2==1.25.1
raven==5.8.1
reportlab==2.7
six==1.10.0
wheel==0.24.0
xhtml2pdf==0.0.6

pdf在浏览器窗口中打开,而不是acrobat。 我搜索并尝试了其他软件,如django-wkhtmltopdf和pdfcrowd。我在mac上开发。我不确定我是否可以在pdf中放置一个特定标签来制作'表格字段'显示在pdf中。
任何指导表示赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

如评论中所述,xhtml2pdf不支持它。该库使用reportlab生成PDF文件,而reportlab本身并不正式支持它。实际上甚至是商业版supports only the filling of existing forms

然而,正如this answer所示,reportlab对此有一些实验性的工作。我检查了current source,似乎它仍然在进行中。因此,如果您(但似乎您不再这样做)或其他人需要这样做,您可以尝试一下。但是将HTML转换成PDF格式要复杂得多......

即使查看其他库,似乎目前还没有真正的开源/免费选项来生成可编辑的PDF表单。