用Django填充Livecycle表单

0 投票
1 回答
763 浏览
提问于 2025-04-17 06:17

我正在尝试用Django中的表单数据填充一个用LiveCycle创建的表单。现在我觉得我的代码写得差不多了,但在处理LiveCycle表单的结构时遇到了困难。目前,我可以填充用Adobe Acrobat创建的PDF文件,但对LiveCycle的支持还不够。请问LiveCycle有没有特定的文件结构?

这是我用来填充PDF的函数:

def print_rdba(client=None, data=None, investment_form=None):
from django.http import HttpResponse
from clients.models import Client
from dateutil.parser import parse
from settings import URL
from datetime import date
file = ''
print data
fdf = '<?xml version="1.0" encoding="UTF-8"?>\n<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">\n\t<fields>'
fdf += fdf_val_str("primary1_lastname", data.get('lastname'))
fdf += fdf_val_str("primary1_firstname", data.get('firstname'))

if investment_form:
    file = "%s%s" % (URL, investment_form.file.url)

fdf += '''</fields>
    <f href="%s" target="_blank"/>
    </xfdf>''' % file

fdf = fdf.replace('^M', '')

response = HttpResponse(fdf.encode("ISO-8859-1"), mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=form.xfdf'
return response

这是fdf_val_str:

def fdf_val_str(field, val):
val = str(val).replace('&','&amp;')
return '<field name="%s"><value>%s</value></field>\n' % (field, val)

我在views.py中的编辑函数:

@login_required
@user_passes_test(lambda u: u.is_staff or u.rep_set.get().add_clients, login_url='/')
def edit(request, client=None, *args, **kwargs):
from clients.forms import ClientForm
from entity.forms import LocationForm
from investments.models import InvestmentForm
from lib.tools import print_rdba
...
rdba_btn = InvestmentForm.objects.get(id=3)
context = {}
...
if request.POST.has_key('submit-%s' % rdba_btn.code):
            request.user.message_set.create(message='Generating PDF form')
            return print_rdba(client=client, data=form.data, investment_form=rdba_btn)

任何帮助都将非常感谢

1 个回答

-1

你有没有安装LiveCycle表单?如果有的话,你可以用Django生成XML数据,然后把这些数据发送到LiveCycle去制作PDF表单。

补充一下:你需要注意的是,LiveCycle Designer生成的是基于XFA的表单,这和XFDF是不同的。

撰写回答