创建PDF文档
您可以使用Output服务创建基于表单设计和您提供的XML表单数据的PDF文档。 Output服务创建的PDF文档不是交互式PDF文档;用户无法输入或修改表单数据。
如果要创建用于长期存储的PDF文档,建议您创建一个PDF/A文档。 (请参阅创建PDF/A文档。)
要创建可让用户输入数据的交互式PDF表单,请使用Forms服务。 (请参阅渲染交互式PDF forms。)
步骤摘要
要创建PDF文档,请执行以下步骤:
- 包括项目文件。
- 创建输出客户端对象。
- 引用XML数据源。
- 设置PDF运行时选项。
- 设置渲染运行时选项。
- 生成PDF文档。
- 检索操作的结果。
包含项目文件
在开发项目中包含必要的文件。 如果使用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部署在受支持的J2EE应用程序服务器而不是JBoss上,则必须将adobe-utilities.jar和jbossall-client.jar文件替换为特定于已部署AEM Forms的J2EE应用程序服务器的JAR文件。
创建输出客户端对象
必须先创建输出服务客户端对象,然后才能以编程方式执行输出服务操作。 如果您使用的是Java API,请创建一个OutputClient
对象。 如果您使用输出Web服务API,请创建一个OutputServiceService
对象。
引用XML数据源
要将数据与表单设计合并,必须引用包含数据的XML数据源。 您计划使用数据填充的每个表单字段都必须存在XML元素。 XML元素名称必须与字段名称匹配。 如果XML元素与表单字段不对应,或者如果XML元素名称与字段名称不匹配,则忽略该元素。 如果指定了所有XML元素,则不必匹配XML元素的显示顺序。
考虑以下示例贷款申请表。
要将数据合并到此表单设计,必须创建与表单相对应的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选项。 此选项指定Output服务生成的PDF文件的名称和位置。
设置渲染运行时选项
创建PDF文档时,可以设置渲染运行时选项。 虽然这些选项不是必需的(与所需的PDF运行时选项不同),但您可以执行诸如提高输出服务性能的任务。 例如,您可以缓存Output服务用于提高性能的表单设计。
如果您使用已标记的Acrobat表单作为输入,则无法使用输出服务Java或Web服务API来关闭已标记的设置。 如果您尝试以编程方式将此选项设置为false
,则仍会标记结果PDF文档。
RenderOptionsSpec
类引用。 (请参阅AEM Forms API引用)。生成PDF文档
在引用包含表单数据的有效XML数据源并设置运行时选项后,可以调用Output服务,从而生成PDF文档。
在生成PDF文档时,您可以指定Output服务创建PDF文档所需的URI值。 窗体设计可以存储在服务器文件系统等位置或作为AEM Forms应用程序的一部分进行存储。 可以使用内容根URI值repository:///
引用作为Forms应用程序一部分的表单设计(或其他资源,如图像文件)。 例如,考虑位于名为 Applications/FormsApplication 的Forms应用程序中的以下名为 Loan.xdp 的表单设计:
要访问上图所示的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
对象的generatePDFOutput
或generatePrintedOutput
方法时,您可以引用Forms应用程序URI。检索操作的结果
在Output服务执行操作之后,它会返回各种数据项,如指定操作是否成功的状态XML数据。
另请参阅
使用Java API创建PDF文档
使用输出API (Java)创建PDF文档:
-
包括项目文件。
在您的Java项目的类路径中包含客户端JAR文件,例如adobe-output-client.jar。
-
创建输出客户端对象。
- 创建包含连接属性的
ServiceClientFactory
对象。 - 使用构造函数创建
OutputClient
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
引用XML数据源。
- 创建一个
java.io.FileInputStream
对象,该对象表示用于填充PDF文档的XML数据源,方法是使用其构造函数并传递一个指定XML文件位置的字符串值。 - 使用构造函数创建
com.adobe.idp.Document
对象。 传递java.io.FileInputStream
对象。
- 创建一个
-
设置PDF运行时选项。
- 使用构造函数创建
PDFOutputOptionsSpec
对象。 - 通过调用
PDFOutputOptionsSpec
对象的setFileURI
方法来设置文件URI选项。 传递一个字符串值,该值指定Output服务生成的PDF文件的位置。 文件URI选项相对于托管AEM Forms的J2EE应用程序服务器,而不是客户端计算机。
- 使用构造函数创建
-
设置渲染运行时选项。
- 使用构造函数创建
RenderOptionsSpec
对象。 - 通过调用
RenderOptionsSpec
对象的setCacheEnabled
并传递true
,缓存表单设计以提高输出服务的性能。
注意
如果输入文档是Acrobat表单(在Acrobat中创建的表单)或已签名或认证的XFA文档,则无法使用RenderOptionsSpec
对象的setPdfVersion
方法设置PDF文档的版本。 输出PDF文档保留原始PDF版本。 同样,如果输入文档是Acrobat表单或已签名或认证的XFA文档,则无法通过调用RenderOptionsSpec
对象的setTaggedPDF
方法来设置已标记的Adobe PDF选项。注意
- 使用构造函数创建
-
生成PDF文档。
通过调用
OutputClient
对象的generatePDFOutput
方法并传递以下值来创建PDF文档:TransformationFormat
枚举值。 要生成PDF文档,请指定TransformationFormat.PDF
。- 一个字符串值,它指定窗体设计的名称。
- 一个字符串值,它指定表单设计所在的内容根。
- 包含PDF运行时选项的
PDFOutputOptionsSpec
对象。 - 包含渲染运行时选项的
RenderOptionsSpec
对象。 - 包含要与表单设计合并的数据的XML数据源的
com.adobe.idp.Document
对象。
generatePDFOutput
方法返回包含该操作结果的OutputResult
对象。注意
通过调用generatePDFOutput
方法生成PDF文档时,不能将数据与已签署或已验证的XFAPDF表单合并。 (请参阅对文档进行数字签名和认证。)注意
OutputResult
对象的getRecordLevelMetaDataList
方法返回null
.注意
-
检索操作的结果。
- 通过调用
OutputResult
对象的getStatusDoc
方法,检索表示generatePDFOutput
操作状态的com.adobe.idp.Document
对象。 此方法返回指定操作是否成功的状态XML数据。 - 创建包含操作结果的
java.io.File
对象。 确保文件扩展名为.xml。 - 调用
com.adobe.idp.Document
对象的copyToFile
方法以将com.adobe.idp.Document
对象的内容复制到文件中(确保您使用getStatusDoc
方法返回的com.adobe.idp.Document
对象)。
虽然Output服务将PDF文档写入传递到
PDFOutputOptionsSpec
对象的setFileURI
方法的参数指定的位置,但可以通过调用OutputResult
对象的getGeneratedDoc
方法以编程方式检索PDF/A文档。 - 通过调用
使用Web服务API创建PDF文档
使用输出API(Web服务)创建PDF文档:
-
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1
。注意
将localhost
替换为承载AEM Forms的服务器的IP地址。 -
创建输出客户端对象。
-
使用默认构造函数创建
OutputServiceClient
对象。 -
使用
System.ServiceModel.EndpointAddress
构造函数创建OutputServiceClient.Endpoint.Address
对象。 将指定WSDL的字符串值传递给AEM Forms服务(例如,http://localhost:8080/soap/services/OutputService?blob=mtom
)。 您无需使用lc_version
属性。 此属性在创建服务引用时使用。 但是,指定?blob=mtom
以使用MTOM。 -
通过获取
OutputServiceClient.Endpoint.Binding
字段的值创建一个System.ServiceModel.BasicHttpBinding
对象。 将返回值强制转换为BasicHttpBinding
。 -
将
System.ServiceModel.BasicHttpBinding
对象的MessageEncoding
字段设置为WSMessageEncoding.Mtom
。 此值可确保使用MTOM。 -
通过执行以下任务启用基本HTTP身份验证:
- 将AEM表单用户名分配给字段
OutputServiceClient.ClientCredentials.UserName.UserName
。 - 将相应的密码值分配给字段
OutputServiceClient.ClientCredentials.UserName.Password
。 - 将常量值
HttpClientCredentialType.Basic
分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
。 - 将常量值
BasicHttpSecurityMode.TransportCredentialOnly
分配给字段BasicHttpBindingSecurity.Security.Mode
。
- 将AEM表单用户名分配给字段
-
-
引用XML数据源。
- 使用构造函数创建
BLOB
对象。BLOB
对象用于存储将与PDF文档合并的XML数据。 - 通过调用其构造函数并传递一个字符串值来创建一个
System.IO.FileStream
对象,该字符串值表示包含表单数据的XML文件的文件位置。 - 创建用于存储
System.IO.FileStream
对象的内容的字节数组。 您可以通过获取System.IO.FileStream
对象的Length
属性来确定字节数组的大小。 - 通过调用
System.IO.FileStream
对象的Read
方法并传递要读取的字节数组、起始位置和流长度,使用流数据填充字节数组。 - 使用字节数组的内容分配其
MTOM
字段以填充BLOB
对象。
- 使用构造函数创建
-
设置PDF运行时选项
- 使用构造函数创建
PDFOutputOptionsSpec
对象。 - 通过分配一个字符串值来设置文件URI选项,该字符串值指定输出服务生成到
PDFOutputOptionsSpec
对象的fileURI
数据成员的PDF文件的位置。 文件URI选项相对于托管AEM Forms的J2EE应用程序服务器,而不是客户端计算机。
- 使用构造函数创建
-
设置渲染运行时选项。
- 使用构造函数创建
RenderOptionsSpec
对象。 - 缓存表单设计以通过将
true
值分配给RenderOptionsSpec
对象的cacheEnabled
数据成员来提高Output服务的性能。
注意
如果输入文档是Acrobat表单(在Acrobat中创建的表单)或已签名或认证的XFA文档,则无法使用RenderOptionsSpec
对象的setPdfVersion
方法设置PDF文档的版本。 输出PDF文档保留原始PDF版本。 同样,如果输入文档是Acrobat表单或已签名或认证的XFA文档,则通过调用RenderOptionsSpec
对象的setTaggedPDF
方法无法设置已标记Adobe PDF选项。注意
- 使用构造函数创建
-
生成PDF文档。
通过调用
OutputServiceService
对象的generatePDFOutput
方法并传递以下值来创建PDF文档:TransformationFormat
枚举值。 要生成PDF文档,请指定TransformationFormat.PDF
。- 一个字符串值,它指定窗体设计的名称。
- 一个字符串值,它指定表单设计所在的内容根。
- 包含PDF运行时选项的
PDFOutputOptionsSpec
对象。 - 包含渲染运行时选项的
RenderOptionsSpec
对象。 - 包含要与表单设计合并的数据的XML数据源的
BLOB
对象。 - 由
generatePDFOutput
方法填充的BLOB
对象。generatePDFOutput
方法使用所生成的描述文档的元数据填充此对象。 (只有Web服务调用才需要此参数值)。 - 由
generatePDFOutput
方法填充的BLOB
对象。generatePDFOutput
方法使用结果数据填充此对象。 (只有Web服务调用才需要此参数值)。 - 包含操作结果的
OutputResult
对象。 (只有Web服务调用才需要此参数值)。
注意
通过调用generatePDFOutput
方法生成PDF文档时,不能将数据与已签署或已验证的XFAPDF表单合并。 (请参阅对文档进行数字签名和认证。)注意
-
检索操作的结果。
- 通过调用其构造函数并传递表示包含结果数据的XML文件位置的字符串值来创建
System.IO.FileStream
对象。 确保文件扩展名为.xml。 - 创建一个字节数组,用于存储
BLOB
对象的数据内容,该对象由OutputServiceService
对象的generatePDFOutput
方法(第八个参数)用结果数据填充。 通过获取BLOB
对象的MTOM
field
的值填充字节数组。 - 通过调用其构造函数并传递
System.IO.FileStream
对象来创建System.IO.BinaryWriter
对象。 - 通过调用
System.IO.BinaryWriter
对象的Write
方法并传递字节数组,将字节数组的内容写入XML文件。
另请参阅
- 通过调用其构造函数并传递表示包含结果数据的XML文件位置的字符串值来创建
OutputServiceService
对象的generateOutput
方法。创建PDF/A文档
您可以使用Output服务创建PDF/A文档。 由于PDF/A是用于长期保存文档内容的存档格式,因此所有字体都将嵌入,并且文件是未压缩的。 因此,PDF/A 文档通常比标准 PDF 文档大。此外,PDF/文档不包含音频和视频内容。 与其他“输出”服务任务一样,提供表单设计和数据以与表单设计合并,以创建PDF/文档。
PDF/A-1规范包含两个一致性级别,即a和b。两者之间的主要区别在于对逻辑结构(辅助功能)的支持,一致性级别b不需要该支持。无论一致性级别如何,PDF/A-1都指示所有字体都嵌入到生成的PDF/A文档中。
尽管PDF/A是归档PDF文档的标准,但是如果标准PDF文档满足公司的需要,则不必使用PDF/A进行归档。 PDF/A标准的目的是建立一个PDF文件,它可以长期存储并且满足文档保存要求。 例如,无法将URL嵌入到PDF/A中,因为随着时间的推移,该URL可能会变得无效。
您的组织必须评估自己的需求、您打算保留文档的时间长度、文件大小考虑因素,并确定自己的归档策略。 您可以使用DocConverter服务以编程方式确定PDF文档是否符合PDF/A标准。 (请参阅以编程方式确定PDF/合规性。)
PDF/文档必须使用在表单设计中指定的字体,且不能替换字体。 因此,如果位于PDF文档中的字体在主机操作系统(OS)上不可用,则会发生异常。
在Acrobat中打开PDF/A文档时,将显示一条消息,确认该文档为PDF/A文档,如下图所示。
步骤摘要
要创建PDF/文档,请执行以下步骤:
- 包括项目文件。
- 创建输出客户端对象。
- 引用XML数据源。
- 设置PDF/A运行时选项。
- 设置渲染运行时选项。
- 生成PDF/文档。
- 检索操作的结果。
包含项目文件
在开发项目中包含必要的文件。 如果要使用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部署在受支持的J2EE应用程序服务器而不是JBoss上,则必须将adobe-utilities.jar和jbossall-client.jar文件替换为特定于已部署AEM Forms的J2EE应用程序服务器的JAR文件。
创建输出客户端对象
必须先创建输出服务客户端对象,然后才能以编程方式执行输出服务操作。 如果您使用的是Java API,请创建一个OutputClient
对象。 如果您使用输出Web服务API,请创建一个OutputServiceService
对象。
引用XML数据源
要将数据与表单设计合并,必须引用包含数据的XML数据源。 要使用数据填充的每个表单字段都必须存在XML元素。 XML元素名称必须与字段名称匹配。 如果XML元素与表单字段不对应,或者如果XML元素名称与字段名称不匹配,则忽略该元素。 如果指定了所有XML元素,则不必匹配XML元素的显示顺序。
设置PDF/A运行时选项
创建PDF/A文档时,可以设置“文件URI”选项。 URI相对于托管AEM Forms的J2EE应用程序服务器。 也就是说,如果设置C:\Adobe ,文件将写入服务器上的文件夹,而不是客户端计算机。 URI指定Output服务生成的PDF/A文件的名称和位置。
设置渲染运行时选项
在创建PDF/A文档时,可以设置渲染运行时选项。 可以设置的两个PDF/A相关选项是PDFAConformance
和PDFARevisionNumber
值。 PDFAConformance
值指的是PDF文档如何遵守指定保留长期电子文档的要求。 此选项的有效值为A
和B
。 有关级别a和b合规性的信息,请参阅标题为 ISO 19005-1 Document management 的PDF/A-1 ISO规范。
PDFARevisionNumber
值是指PDF/A文档的修订号。 有关PDF/A文档的修订版本号的信息,请参阅标题为 ISO 19005-1 Document management 的PDF/A-1 ISO规范。
false
。 PDF/A 1A将始终是带标签的PDF文档。 此外,在创建PDF/A 1B文档时,不能将已标记的Adobe PDF选项设置为true
。 PDF/A 1B将始终是未标记的PDF文档。生成PDF/文档
在引用包含表单数据的有效XML数据源并设置运行时选项后,可以调用输出服务,使其生成PDF/A文档。
检索操作的结果
在Output服务执行操作后,它会返回各种数据项,如指定操作是否成功的XML数据。
另请参阅
使用Java API创建PDF/文档
使用输出API (Java)创建PDF/文档:
-
包括项目文件。
在您的Java项目的类路径中包含客户端JAR文件,例如adobe-output-client.jar。
-
创建输出客户端对象。
- 创建包含连接属性的
ServiceClientFactory
对象。 - 使用构造函数创建
OutputClient
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
引用XML数据源。
- 创建一个
java.io.FileInputStream
对象,该对象表示用于填充PDF/A文档的XML数据源,方法是使用其构造函数并传递指定XML文件位置的字符串值。 - 使用对象的构造函数创建
com.adobe.idp.Document
对象并传递java.io.FileInputStream
对象。
- 创建一个
-
设置PDF/A运行时选项。
- 使用构造函数创建
PDFOutputOptionsSpec
对象。 - 通过调用
PDFOutputOptionsSpec
对象的setFileURI
方法来设置文件URI选项。 传递一个字符串值,该值指定Output服务生成的PDF文件的位置。 文件URI选项相对于托管AEM Forms的J2EE应用程序服务器,而不是客户端计算机。
- 使用构造函数创建
-
设置渲染运行时选项。
- 使用构造函数创建
RenderOptionsSpec
对象。 - 通过调用
RenderOptionsSpec
对象的setPDFAConformance
方法并传递指定一致性级别的PDFAConformance
枚举值来设置PDFAConformance
值。 例如,要指定一致性级别A,请传递PDFAConformance.A
。 - 通过调用
RenderOptionsSpec
对象的setPDFARevisionNumber
方法并传递PDFARevisionNumber.Revision_1
来设置PDFARevisionNumber
值。
注意
PDF/A文档的PDF版本是1.4,无论您为RenderOptionsSpec
对象的setPdfVersion
方法指定哪个值。 - 使用构造函数创建
-
生成PDF/文档。
通过调用
OutputClient
对象的generatePDFOutput
方法并传递以下值来创建PDF/文档:TransformationFormat
枚举值。 要生成PDF/文档,请指定TransformationFormat.PDFA
。- 一个字符串值,它指定窗体设计的名称。
- 一个字符串值,它指定表单设计所在的内容根。
- 包含PDF运行时选项的
PDFOutputOptionsSpec
对象。 - 包含渲染运行时选项的
RenderOptionsSpec
对象。 - 包含要与表单设计合并的数据的XML数据源的
com.adobe.idp.Document
对象。
generatePDFOutput
方法返回包含该操作结果的OutputResult
对象。注意
OutputResult
对象的getRecordLevelMetaDataList
方法返回null
。注意
-
检索操作的结果。
- 通过调用
OutputResult
对象的getStatusDoc
方法,创建表示generatePDFOutput
方法状态的com.adobe.idp.Document
对象。 - 创建将包含操作结果的
java.io.File
对象。 确保文件扩展名为.xml。 - 调用
com.adobe.idp.Document
对象的copyToFile
方法以将com.adobe.idp.Document
对象的内容复制到文件中(确保您使用getStatusDoc
方法返回的com.adobe.idp.Document
对象)。
注意
虽然Output服务将PDF/A文档写入传递给PDFOutputOptionsSpec
对象的setFileURI
方法的参数指定的位置,但可以通过调用OutputResult
对象的getGeneratedDoc
方法以编程方式检索PDF/A文档。 - 通过调用
使用Web服务API创建PDF/文档
使用输出API(Web服务)创建PDF/文档:
-
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1
。注意
将localhost
替换为承载AEM Forms的服务器的IP地址。 -
创建输出客户端对象。
-
使用默认构造函数创建
OutputServiceClient
对象。 -
使用
System.ServiceModel.EndpointAddress
构造函数创建OutputServiceClient.Endpoint.Address
对象。 将指定WSDL的字符串值传递给AEM Forms服务(例如,http://localhost:8080/soap/services/OutputService?blob=mtom
)。 您无需使用lc_version
属性。 此属性在创建服务引用时使用。 但是,指定?blob=mtom
以使用MTOM。 -
通过获取
OutputServiceClient.Endpoint.Binding
字段的值创建一个System.ServiceModel.BasicHttpBinding
对象。 将返回值强制转换为BasicHttpBinding
。 -
将
System.ServiceModel.BasicHttpBinding
对象的MessageEncoding
字段设置为WSMessageEncoding.Mtom
。 此值可确保使用MTOM。 -
通过执行以下任务启用基本HTTP身份验证:
- 将AEM表单用户名分配给字段
OutputServiceClient.ClientCredentials.UserName.UserName
。 - 将相应的密码值分配给字段
OutputServiceClient.ClientCredentials.UserName.Password
。 - 将常量值
HttpClientCredentialType.Basic
分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
。 - 将常量值
BasicHttpSecurityMode.TransportCredentialOnly
分配给字段BasicHttpBindingSecurity.Security.Mode
。
- 将AEM表单用户名分配给字段
-
-
引用XML数据源。
- 使用构造函数创建
BLOB
对象。BLOB
对象用于存储将与PDF/A文档合并的数据。 - 通过调用其构造函数并传递一个字符串值来创建一个
System.IO.FileStream
对象,该字符串值表示要加密的PDF文档的文件位置以及打开文件的模式。 - 创建用于存储
System.IO.FileStream
对象的内容的字节数组。 您可以通过获取System.IO.FileStream
对象的Length
属性来确定字节数组的大小。 - 通过调用
System.IO.FileStream
对象的Read
方法并传递要读取的字节数组、起始位置和流长度,使用流数据填充字节数组。 - 使用字节数组内容分配其
MTOM
字段以填充BLOB
对象。
- 使用构造函数创建
-
设置PDF/A运行时选项。
- 使用构造函数创建
PDFOutputOptionsSpec
对象。 - 通过分配一个字符串值来设置文件URI选项,该字符串值指定输出服务生成到
PDFOutputOptionsSpec
对象的fileURI
数据成员的PDF文件的位置。 文件URI选项相对于托管AEM Forms的J2EE应用程序服务器,而不是客户端计算机
- 使用构造函数创建
-
设置渲染运行时选项。
- 使用构造函数创建
RenderOptionsSpec
对象。 - 通过为
RenderOptionsSpec
对象的PDFAConformance
数据成员分配PDFAConformance
枚举值来设置PDFAConformance
值。 例如,要指定一致性级别A,请将PDFAConformance.A
分配给此数据成员。 - 通过为
RenderOptionsSpec
对象的PDFARevisionNumber
数据成员分配PDFARevisionNumber
枚举值来设置PDFARevisionNumber
值。 将PDFARevisionNumber.Revision_1
分配给此数据成员。
注意
无论您指定哪个值,PDF/A文档的PDF版本均为1.4。 - 使用构造函数创建
-
生成PDF/文档。
通过调用
OutputServiceService
对象的generatePDFOutput
方法并传递以下值来创建PDF文档:- TransformationFormat枚举值。 要生成PDF文档,请指定
TransformationFormat.PDFA
。 - 一个字符串值,它指定窗体设计的名称。
- 一个字符串值,它指定表单设计所在的内容根。
- 包含PDF运行时选项的
PDFOutputOptionsSpec
对象。 - 包含渲染运行时选项的
RenderOptionsSpec
对象。 - 包含要与表单设计合并的数据的XML数据源的
BLOB
对象。 - 由
generatePDFOutput
方法填充的BLOB
对象。generatePDFOutput
方法使用所生成的描述文档的元数据填充此对象。 (只有Web服务调用才需要此参数值。) - 由
generatePDFOutput
方法填充的BLOB
对象。generatePDFOutput
方法使用结果数据填充此对象。 (只有Web服务调用才需要此参数值。) - 包含操作结果的
OutputResult
对象。 (只有Web服务调用才需要此参数值。)
注意
- TransformationFormat枚举值。 要生成PDF文档,请指定
-
检索操作的结果。
- 通过调用其构造函数并传递表示包含结果数据的XML文件位置的字符串值来创建
System.IO.FileStream
对象。 确保文件扩展名为.xml。 - 创建一个字节数组,用于存储
BLOB
对象的数据内容,该对象由OutputServiceService
对象的generatePDFOutput
方法(第八个参数)用结果数据填充。 通过获取BLOB
对象的MTOM
字段的值填充字节数组。 - 通过调用其构造函数并传递
System.IO.FileStream
对象来创建System.IO.BinaryWriter
对象。 - 通过调用
System.IO.BinaryWriter
对象的Write
方法并传递字节数组,将字节数组的内容写入XML文件。
- 通过调用其构造函数并传递表示包含结果数据的XML文件位置的字符串值来创建
将Content Services中的文档(已弃用)传递到Output Service
Output服务可呈现基于表单设计的非交互式PDF表单,该表单通常保存为XDP文件并在Designer中创建。 您可以将包含表单设计的com.adobe.idp.Document
对象传递到Output服务。 然后,输出服务在com.adobe.idp.Document
对象中呈现窗体设计。
将com.adobe.idp.Document
对象传递给输出服务的好处是,其他AEM Forms服务操作返回com.adobe.idp.Document
实例。 也就是说,您可以从另一个服务操作获取com.adobe.idp.Document
实例并对其进行渲染。 例如,假设XDP文件存储在名为/Company Home/Form Designs
的Content Services(已弃用)节点中,如下图所示。
您可以通过编程方式从内容服务(已弃用)检索Loan.xdp,并将XDP文件传递到com.adobe.idp.Document
对象中的输出服务。
步骤摘要
要将从Content Services(已弃用)获得的文档传递到输出服务,请执行以下任务:
- 包括项目文件。
- 创建输出和文档管理客户端API对象。
- 从Content Services检索表单设计(已弃用)。
- 呈现非交互式PDF表单。
- 对数据流执行操作。
包含项目文件
将必要的文件包含到开发项目中。 如果使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请包含代理文件。
创建输出和文档管理客户端API对象
在以编程方式执行输出服务API操作之前,请先创建输出客户端API对象。 此外,由于此工作流从内容服务中检索XDP文件(已弃用),因此请创建文档管理API对象。
从内容服务检索表单设计(已弃用)
使用Java或Web服务API从内容服务中检索XDP文件(已弃用)。 XDP文件在com.adobe.idp.Document
实例(或者BLOB
实例,如果您使用Web服务)中返回。 然后,您可以将com.adobe.idp.Document
实例传递到输出服务。
渲染非交互式PDF表单
要呈现非交互式表单,请将从Content Services(已弃用)返回的com.adobe.idp.Document
实例传递到输出服务。
generatePDFOutput2
和g eneratePrintedOutput2
的两个新方法接受包含表单设计的com.adobe.idp.Document
对象。 在将打印流发送到网络打印机时,您还可以将包含表单设计的com.adobe.idp.Document
传递到Output服务。对表单数据流执行操作
您可以将非交互式表单另存为PDF文件。 该表单可在Adobe Reader或Acrobat中查看。
另请参阅
使用Java API将文档传递到输出服务
使用输出服务和内容服务(已弃用)API (Java)传递从内容服务(已弃用)检索的文档:
-
包括项目文件。
在Java项目的类路径中包含客户端JAR文件,例如adobe-output-client.jar和adobe-contentservices-client.jar。
-
创建输出和文档管理客户端API对象。
- 创建包含连接属性的
ServiceClientFactory
对象。 (请参阅设置连接属性。) - 使用构造函数创建
OutputClient
对象并传递ServiceClientFactory
对象。 - 使用对象的构造函数创建
DocumentManagementServiceClientImpl
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
从Content Services检索表单设计(已弃用)。
调用
DocumentManagementServiceClientImpl
对象的retrieveContent
方法并传递以下值:- 一个字符串值,它指定添加内容的存储。 默认存储为
SpacesStore
。 此值是必需参数。 - 一个字符串值,它指定要检索的内容的完全限定路径(例如,
/Company Home/Form Designs/Loan.xdp
)。 此值是必需参数。 - 指定版本的字符串值。 此值是一个可选参数,您可以传递空字符串。 在这种情况下,将检索最新版本。
retrieveContent
方法返回包含XDP文件的CRCResult
对象。 通过调用CRCResult
对象的getDocument
方法检索com.adobe.idp.Document
实例。 - 一个字符串值,它指定添加内容的存储。 默认存储为
-
呈现非交互式PDF表单。
调用
OutputClient
对象的generatePDFOutput2
方法并传递以下值:TransformationFormat
枚举值。 要生成PDF文档,请指定TransformationFormat.PDF
。- 一个字符串值,它指定其他资源(如图像)所在的内容根。
- 表示表单设计的
com.adobe.idp.Document
对象(使用CRCResult
对象的getDocument
方法返回的实例)。 - 包含PDF运行时选项的
PDFOutputOptionsSpec
对象。 - 包含渲染运行时选项的
RenderOptionsSpec
对象。 - 包含要与表单设计合并的数据的XML数据源的
com.adobe.idp.Document
对象。
generatePDFOutput2
方法返回包含该操作结果的OutputResult
对象。 -
对表单数据流执行操作。
- 通过调用
OutputResult
对象的getGeneratedDoc
方法,检索表示非交互式表单的com.adobe.idp.Document
对象。 - 创建包含操作结果的
java.io.File
对象。 确保文件扩展名为.pdf。 - 调用
com.adobe.idp.Document
对象的copyToFile
方法以将com.adobe.idp.Document
对象的内容复制到文件中(确保您使用getGeneratedDoc
方法返回的com.adobe.idp.Document
对象)。
- 通过调用
使用Web服务API将文档传递到输出服务
使用输出服务和内容服务(已弃用)API(Web服务)传递从内容服务(已弃用)检索的文档:
-
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 由于此客户端应用程序调用两个AEM Forms服务,因此请创建两个服务引用。 为与输出服务关联的服务引用使用以下WSDL定义:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1
。对与Document Management服务关联的服务引用使用以下WSDL定义:
http://localhost:8080/soap/services/DocumentManagementService?WSDL&lc_version=9.0.1
。由于
BLOB
数据类型对两个服务引用都是通用的,因此使用它时,请完全限定BLOB
数据类型。 在相应的Web服务快速入门中,所有BLOB
实例都是完全限定的。注意
将localhost
替换为承载AEM Forms的服务器的IP地址。 -
创建输出和文档管理客户端API对象。
-
使用默认构造函数创建
OutputServiceClient
对象。 -
使用
System.ServiceModel.EndpointAddress
构造函数创建OutputServiceClient.Endpoint.Address
对象。 将指定WSDL的字符串值传递给Forms服务(例如,http://localhost:8080/soap/services/OutputService?blob=mtom
)。 您无需使用lc_version
属性。 此属性在创建服务引用时使用。) -
通过获取
OutputServiceClient.Endpoint.Binding
字段的值创建一个System.ServiceModel.BasicHttpBinding
对象。 将返回值强制转换为BasicHttpBinding
。 -
将
System.ServiceModel.BasicHttpBinding
对象的MessageEncoding
字段设置为WSMessageEncoding.Mtom
。 此值可确保使用MTOM。 -
通过执行以下任务启用基本HTTP身份验证:
- 将AEM表单用户名分配给字段
OutputServiceClient.ClientCredentials.UserName.UserName
。 - 将相应的密码值分配给字段
OutputServiceClient.ClientCredentials.UserName.Password
。 - 将常量值
HttpClientCredentialType.Basic
分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
。
- 将AEM表单用户名分配给字段
-
将常量值
BasicHttpSecurityMode.TransportCredentialOnly
分配给字段BasicHttpBindingSecurity.Security.Mode
。
注意
对DocumentManagementServiceClient
服务客户端重复这些步骤。 -
-
从Content Services检索表单设计(已弃用)。
通过调用
DocumentManagementServiceClient
对象的retrieveContent
方法并传递以下值来检索内容:- 一个字符串值,它指定添加内容的存储。 默认存储为
SpacesStore
。 此值是必需参数。 - 一个字符串值,它指定要检索的内容的完全限定路径(例如,
/Company Home/Form Designs/Loan.xdp
)。 此值是必需参数。 - 指定版本的字符串值。 此值是一个可选参数,您可以传递空字符串。 在这种情况下,将检索最新版本。
- 用于存储浏览链接值的字符串输出参数。
- 用于存储内容的
BLOB
输出参数。 您可以使用此输出参数检索内容。 - 用于存储内容属性的
ServiceReference1.MyMapOf_xsd_string_To_xsd_anyType
输出参数。 CRCResult
输出参数。 您可以使用BLOB
输出参数来检索内容,而不是使用此对象。
- 一个字符串值,它指定添加内容的存储。 默认存储为
-
呈现非交互式PDF表单。
调用
OutputServiceClient
对象的generatePDFOutput2
方法并传递以下值:TransformationFormat
枚举值。 要生成PDF文档,请指定TransformationFormat.PDF
。- 一个字符串值,它指定其他资源(如图像)所在的内容根。
- 表示表单设计的
BLOB
对象(使用内容服务返回的BLOB
实例(已弃用))。 - 包含PDF运行时选项的
PDFOutputOptionsSpec
对象。 - 包含渲染运行时选项的
RenderOptionsSpec
对象。 - 包含要与表单设计合并的数据的XML数据源的
BLOB
对象。 - 由
generatePDFOutput2
方法填充的输出BLOB
对象。generatePDFOutput2
方法使用所生成的描述文档的元数据填充此对象。 (只有Web服务调用才需要此参数值)。 - 包含操作结果的输出
OutputResult
对象。 (只有Web服务调用才需要此参数值)。
generatePDFOutput2
方法返回包含非交互式PDF表单的BLOB
对象。 -
对表单数据流执行操作。
- 通过调用其构造函数创建
System.IO.FileStream
对象。 传递一个字符串值,该值表示交互式PDF文档的文件位置以及打开文件的模式。 - 创建一个字节数组,用于存储从
generatePDFOutput2
方法检索的BLOB
对象的内容。 通过获取BLOB
对象的MTOM
数据成员的值填充字节数组。 - 通过调用其构造函数并传递
System.IO.FileStream
对象来创建System.IO.BinaryWriter
对象。 - 通过调用
System.IO.BinaryWriter
对象的Write
方法并传递字节数组,将字节数组的内容写入PDF文件。
- 通过调用其构造函数创建
将存储库中的文档传递到Output服务
Output服务可呈现基于表单设计的非交互式PDF表单,该表单通常保存为XDP文件并在Designer中创建。 您可以将包含表单设计的com.adobe.idp.Document
对象传递到Output服务。 然后,输出服务在com.adobe.idp.Document
对象中呈现窗体设计。
将com.adobe.idp.Document
对象传递给输出服务的好处是,其他AEM Forms服务操作返回com.adobe.idp.Document
实例。 也就是说,您可以从另一个服务操作获取com.adobe.idp.Document
实例并对其进行渲染。 例如,假设XDP文件存储在AEM Forms存储库中,如下图所示。
FormsFolder 文件夹是AEM Forms存储库中的用户定义的位置(此位置是一个示例,默认不存在)。 在此示例中,名为Loan.xdp的表单设计位于此文件夹中。 除了表单设计之外,还可以在此位置存储其他表单宣传资料,例如图像。 AEM Forms存储库中资源的路径为:
Applications/Application-name/Application-version/Folder.../Filename
您可以以编程方式从AEM Forms存储库检索Loan.xdp,并将其传递到com.adobe.idp.Document
对象中的输出服务。
您可以使用以下两种方式之一,基于存储库中的XDP文件创建PDF。 您可以按引用传递XDP位置,也可以以编程方式从存储库检索XDP,并将其传递到XDP文件中的Output服务。
快速入门(EJB模式):使用Java API基于应用程序XDP文件创建PDF文档(显示如何通过引用传递XDP文件的位置)。
快速入门(EJB模式):使用Java API将AEM Forms存储库中的文档传递到Output服务(显示如何以编程方式从AEM Forms存储库检索XDP文件并将其传递到com.adobe.idp.Document
实例中的Output服务)。 (本节讨论如何执行此任务)
步骤摘要
要将从AEM Forms存储库获得的文档传递到输出服务,请执行以下任务:
- 包括项目文件。
- 创建输出和文档管理客户端API对象。
- 从AEM Forms存储库检索表单设计。
- 呈现非交互式PDF表单。
- 对数据流执行操作。
包含项目文件
将必要的文件包含到开发项目中。 如果使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请包含代理文件。
创建输出和文档管理客户端API对象
在以编程方式执行输出服务API操作之前,请先创建输出客户端API对象。 此外,由于此工作流从内容服务中检索XDP文件(已弃用),因此请创建文档管理API对象。
从AEM Forms存储库检索表单设计
使用存储库API从AEM Forms存储库检索XDP文件。 (请参阅正在读取资源。)
XDP文件在com.adobe.idp.Document
实例(或者BLOB
实例,如果您使用Web服务)中返回。 然后,您可以将com.adobe.idp.Document
实例传递到Output服务。
渲染非交互式PDF表单
要呈现非交互式表单,请传递使用AEM Forms存储库API返回的com.adobe.idp.Document
实例。
generatePDFOutput2
和generatePrintedOutput2
的两个新方法接受包含表单设计的com.adobe.idp.Document
对象。 在将打印流发送到网络打印机时,您还可以将包含表单设计的com.adobe.idp.Document
传递到输出服务。对表单数据流执行操作
您可以将非交互式表单另存为PDF文件。 该表单可在Adobe Reader或Acrobat中查看。
另请参阅
ResourceRepositoryClient
使用Java API将存储库中的文档传递到输出服务
使用输出服务和存储库API (Java)传递从存储库检索到的文档:
-
包括项目文件。
在您的Java项目的类路径中包含客户端JAR文件,例如adobe-output-client.jar和adobe-repository-client.jar。
-
创建输出和文档管理客户端API对象。
- 创建包含连接属性的
ServiceClientFactory
对象。 (请参阅设置连接属性。) - 使用构造函数创建
OutputClient
对象并传递ServiceClientFactory
对象。 - 使用对象的构造函数创建
DocumentManagementServiceClientImpl
对象并传递ServiceClientFactory
对象。
- 创建包含连接属性的
-
从AEM Forms存储库检索表单设计。
调用
ResourceRepositoryClient
对象的readResourceContent
方法,并将指定URI位置的字符串值传递给XDP文件。 例如,/Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
。此值为必填项。 此方法返回表示XDP文件的com.adobe.idp.Document
实例。 -
呈现非交互式PDF表单。
调用
OutputClient
对象的generatePDFOutput2
方法并传递以下值:TransformationFormat
枚举值。 要生成PDF文档,请指定TransformationFormat.PDF
。- 一个字符串值,它指定其他资源(如图像)所在的内容根。 例如:
repository:///Applications/FormsApplication/1.0/FormsFolder/
。 - 表示表单设计的
com.adobe.idp.Document
对象(使用ResourceRepositoryClient
对象的readResourceContent
方法返回的实例)。 - 包含PDF运行时选项的
PDFOutputOptionsSpec
对象。 - 包含渲染运行时选项的
RenderOptionsSpec
对象。 - 包含要与表单设计合并的数据的XML数据源的
com.adobe.idp.Document
对象。
generatePDFOutput2
方法返回包含该操作结果的OutputResult
对象。 -
对表单数据流执行操作。
- 通过调用
OutputResult
对象的getGeneratedDoc
方法,检索表示非交互式表单的com.adobe.idp.Document
对象。 - 创建包含操作结果的
java.io.File
对象。 确保文件扩展名为.pdf。 - 调用
com.adobe.idp.Document
对象的copyToFile
方法以将com.adobe.idp.Document
对象的内容复制到文件中(确保您使用getGeneratedDoc
方法返回的com.adobe.idp.Document
对象)。
- 通过调用