如何在不创建磁盘上的物理文件的情况下使用python的pdftk?

时间:2016-01-04 17:01:49

标签: python pdftk

我正在使用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传输到内存文件(不在磁盘上)。

1 个答案:

答案 0 :(得分:0)

我在OS上创建了一个ram磁盘文件夹