创建PDF文档

您可以使用输出服务创建基于您提供的表单设计和XML表单数据的PDF文档。 由输出服务创建的PDF文档不是交互式PDF文档;用户无法输入或修改表单数据。

如果要创建用于长期存储的PDF文档,建议创建PDF/文档。 (请参阅 创建PDF/A文档.)

要创建允许用户输入数据的交互式PDF表单,请使用Forms服务。 (请参阅 呈现交互式PDF forms.)

注意
有关输出服务的详细信息,请参阅 AEM Forms服务参考.

步骤摘要

要创建PDF文档,请执行以下步骤:

  1. 包括项目文件。
  2. 创建输出客户端对象。
  3. 引用XML数据源。
  4. 设置PDF运行时选项。
  5. 设置渲染运行时选项。
  6. 生成PDF文档。
  7. 检索操作的结果。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必需的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。

必须将以下JAR文件添加到项目的类路径中:

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-output-client.jar
  • adobe-utilities.jar(在JBoss上部署AEM Forms时必需)
  • jbossall-client.jar(在JBoss上部署AEM Forms时必需)

如果AEM Forms部署在非JBoss的受支持J2EE应用程序服务器上,则您需要将adobe-utilities.jar和jbossall-client.jar文件替换为特定于部署了AEM Forms的J2EE应用程序服务器的JAR文件。

创建输出客户端对象

在以编程方式执行输出服务操作之前,必须创建输出服务客户端对象。 如果您使用的是Java API,请创建 OutputClient 对象。 如果您使用的是输出Web服务API,请创建 OutputServiceService 对象。

引用XML数据源

要将数据与表单设计合并,必须引用包含数据的XML数据源。 您计划使用数据填充的每个表单字段都必须存在XML元素。 XML元素名称必须与字段名称匹配。 如果XML元素与表单字段不对应,或XML元素名称与字段名称不匹配,则忽略该元素。 如果指定了所有XML元素,则不必匹配XML元素的显示顺序。

请考虑以下示例贷款申请表。

cp_cp_loanformdata

要将数据合并到此表单设计中,必须创建与表单对应的XML数据源。 以下XML表示与示例抵押申请表单对应的XDP XML数据源。

 <?xml version="1.0" encoding="UTF-8" ?>
 - <xfa:datasets xmlns:xfa="https://www.xfa.org/schema/xfa-data/1.0/">
 - <xfa:data>
 - <data>
     - <Layer>
         <closeDate>1/26/2007</closeDate>
         <lastName>Johnson</lastName>
         <firstName>Jerry</firstName>
         <mailingAddress>JJohnson@NoMailServer.com</mailingAddress>
         <city>New York</city>
         <zipCode>00501</zipCode>
         <state>NY</state>
         <dateBirth>26/08/1973</dateBirth>
         <middleInitials>D</middleInitials>
         <socialSecurityNumber>(555) 555-5555</socialSecurityNumber>
         <phoneNumber>5555550000</phoneNumber>
     </Layer>
     - <Mortgage>
         <mortgageAmount>295000.00</mortgageAmount>
         <monthlyMortgagePayment>1724.54</monthlyMortgagePayment>
         <purchasePrice>300000</purchasePrice>
         <downPayment>5000</downPayment>
         <term>25</term>
         <interestRate>5.00</interestRate>
     </Mortgage>
 </data>
 </xfa:data>
 </xfa:datasets>

设置PDF运行时选项

在创建PDF文档时设置文件URI选项。 此选项指定输出服务生成的PDF文件的名称和位置。

注意
您可以以编程方式从Output服务返回的复杂数据类型中检索PDF文档,而不是设置文件URI运行时选项。 但是,通过设置文件URI运行时选项,您无需创建以编程方式检索PDF文档的应用程序逻辑。

设置渲染运行时选项

创建PDF文档时,可以设置渲染运行时选项。 尽管这些选项不是必需的(与所需的PDF运行时选项不同),但您可以执行诸如提高输出服务性能之类的任务。 例如,您可以缓存输出服务使用的表单设计,以提高其性能。

如果使用标记的Acrobat表单作为输入,则无法使用输出服务Java或Web服务API来关闭标记设置。 如果您尝试以编程方式将此选项设置为 false,结果PDF文档仍会被标记。

注意
如果未指定渲染运行时选项,则使用默认值。 有关渲染运行时选项的信息,请参阅 RenderOptionsSpec 类引用。 (请参阅 AEM Forms API参考)。

生成PDF文档

在引用包含表单数据的有效XML数据源并设置运行时选项后,可以调用输出服务,这会导致其生成PDF文档。

在生成PDF文档时,您可以指定输出服务创建PDF文档所需的URI值。 表单设计可以存储在诸如服务器文件系统之类的位置或作为AEM Forms应用程序的一部分。 作为Forms应用程序一部分存在的表单设计(或其他资源,如图像文件),可以使用内容根URI值进行引用 repository:///. 例如,请考虑以下名为 Loan.xdp 位于名为的Forms应用程序内 应用程序/表单应用程序:

cp_cp_formrepository

要访问上图所示的Loan.xdp文件,请指定 repository:///Applications/FormsApplication/1.0/FormsFolder/ 作为传递到 OutputClient 对象 generatePDFOutput 方法。 指定表单名称(Loan.xdp)作为传递到 OutputClient 对象 generatePDFOutput 方法。

如果XDP文件包含图像(或其他资源,如片段),请将这些资源放在与XDP文件相同的应用程序文件夹中。 AEM Forms使用内容根URI作为解析对图像的引用的基本路径。 例如,如果Loan.xdp文件包含图像,请确保将该图像放置在 Applications/FormsApplication/1.0/FormsFolder/.

注意
调用 OutputClient 对象 generatePDFOutputgeneratePrintedOutput 方法。
注意
要查看通过引用位于Forms应用程序中的XDP创建PDF文档的完整快速入门,请参阅 快速启动(EJB模式):使用Java API根据应用程序XDP文件创建PDF文档.

检索操作的结果

输出服务执行操作后,它会返回各种数据项,如指定操作是否成功的状态XML数据。

另请参阅

使用Java API创建PDF文档

使用Web服务API创建PDF文档

包括AEM Forms Java库文件

设置连接属性

输出服务API快速入门

使用Java API创建PDF文档

使用输出API(Java)创建PDF文档:

  1. 包括项目文件。

    在Java项目的类路径中包含客户端JAR文件,如adobe-output-client.jar。

  2. 创建输出客户端对象。

    • 创建 ServiceClientFactory 包含连接属性的对象。
    • 创建 OutputClient 对象,并使用其构造函数进行传递 ServiceClientFactory 对象。
  3. 引用XML数据源。

    • 创建 java.io.FileInputStream 表示XML数据源的对象,该XML数据源使用其构造函数填充PDF文档,并传递指定XML文件位置的字符串值。
    • 创建 com.adobe.idp.Document 对象。 传递 java.io.FileInputStream 对象。
  4. 设置PDF运行时选项。

    • 创建 PDFOutputOptionsSpec 对象。
    • 通过调用 PDFOutputOptionsSpec 对象 setFileURI 方法。 传递一个字符串值,以指定输出服务生成的PDF文件的位置。 “文件URI”选项与托管AEM Forms的J2EE应用程序服务器(而非客户端计算机)相关。
  5. 设置渲染运行时选项。

    • 创建 RenderOptionsSpec 对象。
    • 通过调用 RenderOptionsSpec 对象 setCacheEnabled 传递 true.
    注意
    不能使用 RenderOptionsSpec 对象 setPdfVersion 方法。 输出PDF文档保留原始PDF版本。 同样,您也无法通过调用 RenderOptionsSpec 对象 setTaggedPDF方法(如果输入文档是Acrobat表单或已签名或认证的XFA文档)。
    注意
    不能使用 RenderOptionsSpec 对象 setLinearizedPDF 方法,输入PDF文档经认证或数字签名。 (请参阅 数字签名PDF文档​.)
  6. 生成PDF文档。

    通过调用 OutputClient 对象 generatePDFOutput 方法和传递以下值:

    • A TransformationFormat 枚举值。 要生成PDF文档,请指定 TransformationFormat.PDF.
    • 指定表单设计名称的字符串值。
    • 一个字符串值,用于指定表单设计所在的内容根目录。
    • A PDFOutputOptionsSpec 包含PDF运行时选项的对象。
    • A RenderOptionsSpec 包含呈现运行时选项的对象。
    • com.adobe.idp.Document 包含XML数据源的对象,该数据源包含要与表单设计合并的数据。

    generatePDFOutput 方法返回 OutputResult 包含操作结果的对象。

    注意
    通过调用生成PDF文档时 generatePDFOutput 方法,请注意,您无法将数据与已签名或已认证的XFAPDF表单合并。 (请参阅 数字签名和认证文档​.)
    注意
    OutputResult 对象 getRecordLevelMetaDataList 方法返回 null.
    注意
    您还可以通过调用 OutputClient 对象 generatePDFOutput2 方法。 (请参阅 将位于Content Services中的文档(已弃用)传递到输出服务​.)
  7. 检索操作的结果。

    • 检索 com.adobe.idp.Document 表示 generatePDFOutput 操作 OutputResult 对象 getStatusDoc 方法。 此方法会返回状态XML数据,以指定操作是否成功。
    • 创建 java.io.File 包含操作结果的对象。 确保文件扩展名为.xml。
    • 调用 com.adobe.idp.Document 对象 copyToFile 复制内容的方法 com.adobe.idp.Document 对象到文件(确保使用 com.adobe.idp.Document 由返回的对象 getStatusDoc 方法)。

    尽管输出服务会将PDF文档写入由参数指定的位置,该位置将传递到 PDFOutputOptionsSpec 对象 setFileURI 方法中,您可以通过调用以编程方式检索PDF/A文档 OutputResult 对象 getGeneratedDoc 方法。