【发布时间】:2016-01-04 17:01:48
【问题描述】:
我正在使用 pdftk 和 python 将 http post 数据传递给请求处理程序,该请求处理程序生成并返回一个 pdf 文件作为 http 响应。
这是我当前的代码:
import os
from fdfgen import forge_fdf
from django.views.generic.edit import FormView
from django.http import HttpResponse
from myapp.forms import PdfForm
class PdfAutofillFormView(FormView):
form_class = PdfForm
def form_valid(self, form):
fields = [('first_field', form.cleaned_data.get('blah', '')),
('second_field', form.cleaned_data.get('blahblah', '')),]
fdf = forge_fdf("", fields, [], [], [])
fdf_file = open("/tmp/data.fdf", "wb")
fdf_file.write(fdf)
fdf_file.close()
cmd = 'pdftk %s fill_form %s output %s dont_ask' % \
('/home/myuser/original.pdf',
'/tmp/data.fdf',
'/tmp/output.pdf',)
os.system(cmd)
return HttpResponse(open('/tmp/output.pdf', 'r'),
mimetype="application/pdf")
虽然这可行,但它会在磁盘上创建两个 tmp 文件(data.fdf 和 output.pdf)。
我正在寻找一种将 data.fdf 和 output.pdf 通过管道传输到内存文件(不在磁盘上)的方法。
【问题讨论】:
-
应该补充一下,我使用的是 python 2.7、Django 1.5.12 和 fdfgen 0.12.1