如何将数据合并到XDP文件并返回PDF(通过.NET)?

时间:2009-11-18 16:49:33

标签: .net serialization livecycle

我的团队有一个我们用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服务。

任何想法(甚至“停止这样做,你是疯了”)都表示赞赏。

2 个答案:

答案 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附带的渲染服务。可能没有多大帮助,但是嘿:)