我的团队有一个我们用Adobe LiveCycle设计师创建的模板(XDP)。
情况:
我们正在更换旧的Acrobat表单 (XFDF格式)与此LiveCycle 形成更大规模升级的一部分
目前的Acrobat表格是 动态填充基本数据 并以PDF格式发送给用户 (用户单击链接和PDF 在他们预先填充的机器上打开 基本人口统计细节)
当前流程类似于:用户点击,.NET应用程序检索数据,.NET应用程序从文件系统检索PDF,.NET应用程序将数据序列化为XFDF格式的模板,ASP.NET应用程序发送HTTP响应以XFDF格式返回给用户,用户在Adobe Reader中查看PDF
我们希望使用新的XDP格式保持大致类似的过程。
为了记录,我们 DO 可以访问执行此类工作的LiveCycle服务(例如Render服务)。也就是说,我们想在.NET中创建这种类型的序列化有几个原因:我们的LiveCycle许可证有限,并且由于它们在企业中的位置而难以访问LiveCycle服务。
任何想法(甚至“停止这样做,你是疯了”)都表示赞赏。
答案 0 :(得分:3)
创建PDF。将其编码为base64。
创建一个文本文件foo.xdp:
<?xml version='1.0' encoding='UTF-8'?>
<?xfa generator='AdobeDesigner_V7.0' APIVersion='2.2.4333.0'?>
<xdp:xdp xmlns:xdp='http://ns.adobe.com/xdp/'>
<xfa:datasets xmlns:xfa='http://www.xfa.org/schema/xfa-data/1.0/'>
<xfa:data>
在此处插入XML,即动态数据,与PDF中的动态字段匹配。
</xfa:data>
</xfa:datasets>
<pdf xmlns=\"http://ns.adobe.com/xdp/pdf/\"><document>
<chunk>
不在标记之后放置任何字符,插入base64编码的PDF。
</chunk>
</document></pdf>
</xdp:xdp>
而且,瞧,你有一个有效的XDP。 Adobe Reader将接受此操作并显示包含您的值的PDF文件。
在Java中,如果您有一个包含连接详细信息的属性,则以下代码可以使用Livecycle将XDP转换为PDF,尽管您的里程可能因C#而异。
// Create a ServiceClientFactory object
ServiceClientFactory myFactory = ServiceClientFactory
.createInstance(connectionProperties);
// Create a PDF Utility client
PDFUtilityServiceClient pdfClient = new PDFUtilityServiceClient(myFactory);
// Specify an XDP file to convert to a PDF document
ByteArrayInputStream bais = new ByteArrayInputStream(xdp.getBytes("ASCII"));
Document inDoc = new Document(bais);
// Convert the XDP file to a PDF document
Document pdf = pdfClient.convertXDPtoPDF(inDoc);
// Return the PDF as an InputStream.
return pdf.getInputStream();
答案 1 :(得分:0)
听起来你正在寻找客户端渲染 - 这是我从未真正能够以可行的方式使用的东西。鉴于你在.Net工作,它可能会让事情变得不可能......
在我看来,最好的选择肯定是使用Forms ES附带的渲染服务。可能没有多大帮助,但是嘿:)