5

我的团队有一个使用 Adob​​e LiveCycle 设计器创建的模板 (XDP)。

情况:

  • 作为更大升级的一部分,我们正在用此 LiveCycle 表单替换旧的 Acrobat 表单(XFDF 格式)

  • 当前的 Acrobat 表单动态填充基本数据并以 PDF 格式交付给用户(用户单击链接,然后在其计算机上打开一个预先填充了基本人口统计详细信息的 PDF)

  • 当前流程类似于:用户单击,.NET 应用程序检索数据,.NET 应用程序从文件系统检索 PDF,.NET 应用程序将数据序列化为 XFDF 形式的模板,ASP.NET 应用程序以 XFDF 形式向用户发送 HTTP 响应格式,用户在 Adob​​e Reader 中查看 PDF

我们希望与新的 XDP 格式保持大致类似的过程。

作为记录,我们确实有权访问执行此类工作的 LiveCycle 服务(例如渲染服务)。也就是说,出于以下几个原因,我们希望在 .NET 中创建这种类型的序列化:我们的 LiveCycle 许可证有限,并且由于它们在企业中的位置而难以访问 LiveCycle 服务。

任何想法(甚至“停止这样做,你疯了”)都会受到赞赏。

4

2 回答 2

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();
于 2010-01-22T21:56:47.617 回答
0

听起来您正在寻找客户端渲染——这是我从未真正能够以可行的方式使用的东西。鉴于您在.Net 中工作,它可能会让事情变得不可能......

在我看来,你最好的选择肯定是使用 Forms ES 附带的渲染服务。可能没有多大帮助,但是嘿:)

于 2010-01-05T10:18:57.233 回答