Criação dinâmica de documentos DDX dynamically-creating-ddx-documents
Os exemplos e amostras neste documento são somente para AEM Forms no ambiente JEE.
Você pode criar dinamicamente um documento DDX que pode ser usado para executar uma operação do Assembler. A criação dinâmica de um documento DDX permite usar valores nele obtidos durante o tempo de execução. Para criar dinamicamente um documento DDX, use classes que pertençam à linguagem de programação que você está usando. Por exemplo, se você estiver desenvolvendo seu aplicativo cliente usando Java, use classes que pertencem à variável org.w3c.dom.*
pacote. Da mesma forma, se você estiver usando o Microsoft .NET, use classes que pertençam ao System.Xml
namespace.
Antes de passar o documento DDX para o serviço do Assembler, converta o XML de um org.w3c.dom.Document
instância para um com.adobe.idp.Document
instância. Se você estiver usando serviços da Web, converta o XML a partir do tipo de dados usado para criar o XML (por exemplo, XmlDocument
) para um BLOB
instância.
Nesta discussão, suponha que o documento DDX a seguir seja criado dinamicamente.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<PDFsFromBookmarks prefix="stmt">
<PDF source="AssemblerResultPDF.pdf"/>
</PDFsFromBookmarks>
</DDX>
Este documento DDX desmonta um documento PDF. É recomendável que você esteja familiarizado com a desmontagem de documentos do PDF.
Resumo das etapas summary-of-steps
Para desmontar um documento PDF usando um documento DDX criado dinamicamente, execute as seguintes tarefas:
- Incluir arquivos de projeto.
- Crie um cliente PDF Assembler.
- Crie o documento DDX.
- Converta o documento DDX.
- Definir opções de tempo de execução.
- Desmonte o documento PDF.
- Salve os documentos de PDF desmontados.
Incluir arquivos de projeto
Inclua os arquivos necessários no projeto de desenvolvimento. Se você estiver criando uma aplicação cliente usando Java, inclua os arquivos JAR necessários. Se você estiver usando serviços da Web, certifique-se de incluir os arquivos proxy.
Os seguintes arquivos JAR devem ser adicionados ao caminho de classe do projeto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-assembler-client.jar
- adobe-utilities.jar (necessário se o AEM Forms for implantado no JBoss)
- jbossall-client.jar (necessário se o AEM Forms for implantado no JBoss)
Criar um cliente do PDF Assembler
Antes de executar programaticamente uma operação do Assembler, crie um cliente de serviço do Assembler.
Criar o documento DDX
Crie um documento DDX usando a linguagem de programação que você está usando. Para criar um documento DDX que desmonte um documento PDF, verifique se ele contém o PDFsFromBookmarks
elemento. Converta o tipo de dados usado para criar o documento DDX em um com.adobe.idp.Document
instância se estiver usando a API Java. Se você estiver usando serviços da Web, converta o tipo de dados em um BLOB
instância.
Converter o documento DDX
Um documento DDX criado usando org.w3c.dom
as classes devem ser convertidas em um com.adobe.idp.Document
objeto. Para executar essa tarefa ao usar a API Java, use classes de transformação Java XML. Se você estiver usando serviços da Web, converta o documento DDX em um BLOB
objeto.
Referencie um documento do PDF para desmontar
Para desmontar um documento PDF, consulte um arquivo PDF que representa o documento PDF a ser desmontado. Quando passado para o serviço Assembler, um documento PDF separado é retornado para cada marcador de nível 1 no documento.
Definir opções de tempo de execução
Você pode definir opções de tempo de execução que controlam o comportamento do serviço Assembler enquanto ele executa um job. Por exemplo, você pode definir uma opção que instrui o serviço Assembler a continuar processando um job se um erro for encontrado. Para definir opções de tempo de execução, use um AssemblerOptionSpec
objeto.
Desmontar o documento PDF
Desmonte o documento PDF chamando o invokeDDX
operação. Transmita o documento DDX criado dinamicamente. O serviço Assembler retorna documentos PDF desmontados dentro de um objeto de coleção.
Salve os documentos de PDF desmontados
Todos os documentos de PDF desmontados são retornados dentro de um objeto de coleção. Repita o processo através do objeto de coleção e salve cada documento de PDF como um arquivo de PDF.
Consulte também
Criar dinamicamente um documento DDX usando a API do Java
Criar dinamicamente um documento DDX usando a API do serviço Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Definindo propriedades de conexão
Desmontando Documentos PDF de Forma Programática
Criar dinamicamente um documento DDX usando a API do Java dynamically-create-a-ddx-document-using-the-java-api
Crie dinamicamente um documento DDX e desmonte um documento PDF usando a API de serviço do Assembler (Java):
-
Incluir arquivos de projeto.
Inclua arquivos JAR do cliente, como adobe-assembler-client.jar, no caminho de classe do projeto Java.
-
Crie um cliente PDF Assembler.
- Criar um
ServiceClientFactory
objeto que contém propriedades de conexão. - Criar um
AssemblerServiceClient
usando seu construtor e transmitindo oServiceClientFactory
objeto.
- Criar um
-
Crie o documento DDX.
-
Criar um Java
DocumentBuilderFactory
ao chamar oDocumentBuilderFactory
class'newInstance
método. -
Criar um Java
DocumentBuilder
ao chamar oDocumentBuilderFactory
do objetonewDocumentBuilder
método. -
Chame o
DocumentBuilder
do objetonewDocument
método para instanciar umorg.w3c.dom.Document
objeto. -
Crie o elemento raiz do documento DDX chamando o
org.w3c.dom.Document
do objetocreateElement
método. Este método cria umElement
objeto que representa o elemento raiz. Transmita um valor de string que represente o nome do elemento para a variávelcreateElement
método. Converter o valor de retorno emElement
. Em seguida, defina um valor para o elemento filho chamando seusetAttribute
método. Finalmente, anexe o elemento ao elemento de cabeçalho chamando o do elemento de cabeçalhoappendChild
e transmita o objeto de elemento filho como um argumento. As linhas de código a seguir mostram essa lógica de aplicação:Element root = (Element)document.createElement("DDX"); root.setAttribute("xmlns","https://ns.adobe.com/DDX/1.0/"); document.appendChild(root);
-
Crie o
PDFsFromBookmarks
ao chamar oDocument
do objetocreateElement
método. Transmita um valor de string que represente o nome do elemento para a variávelcreateElement
método. Converter o valor de retorno emElement
. Defina um valor para a variávelPDFsFromBookmarks
elemento ao chamar suasetAttribute
método. Anexe oPDFsFromBookmarks
elemento para oDDX
chamando o do elemento DDXappendChild
método. Passe oPDFsFromBookmarks
objeto de elemento como argumento. As linhas de código a seguir mostram essa lógica de aplicação:Element PDFsFromBookmarks = (Element)document.createElement("PDFsFromBookmarks"); PDFsFromBookmarks.setAttribute("prefix","stmt"); root.appendChild(PDFsFromBookmarks);
-
Criar um
PDF
ao chamar oDocument
do objetocreateElement
método. Transmita um valor de string que represente o nome do elemento. Converter o valor de retorno emElement
. Defina um valor para a variávelPDF
elemento ao chamar suasetAttribute
método. Anexe oPDF
elemento para oPDFsFromBookmarks
ao chamar oPDFsFromBookmarks
do elementoappendChild
método. Passe oPDF
objeto de elemento como argumento. As linhas de código a seguir mostram essa lógica de aplicação:Element PDF = (Element)document.createElement("PDF"); PDF.setAttribute("source","AssemblerResultPDF.pdf"); PDFsFromBookmarks.appendChild(PDF);
-
-
Converta o documento DDX.
- Criar um
javax.xml.transform.Transformer
ao invocar ojavax.xml.transform.Transformer
estática do objetonewInstance
método. - Criar um
Transformer
ao invocar oTransformerFactory
do objetonewTransformer
método. - Criar um
ByteArrayOutputStream
usando seu construtor. - Criar um
javax.xml.transform.dom.DOMSource
usando seu construtor. Passe oorg.w3c.dom.Document
objeto que representa o documento DDX. - Criar um
javax.xml.transform.dom.DOMSource
usando seu construtor e transmitindo oByteArrayOutputStream
objeto. - Preencha o Java
ByteArrayOutputStream
ao invocar ojavax.xml.transform.Transformer
do objetotransform
método. Passe ojavax.xml.transform.dom.DOMSource
e a variáveljavax.xml.transform.stream.StreamResult
objetos. - Crie uma matriz de bytes e aloque o tamanho da variável
ByteArrayOutputStream
à matriz de bytes. - Preencha a matriz de bytes chamando o
ByteArrayOutputStream
do objetotoByteArray
método. - Criar um
com.adobe.idp.Document
usando seu construtor e transmitindo a matriz de bytes.
- Criar um
-
Referencie um documento do PDF para desmontar.
-
Criar um
java.util.Map
objeto usado para armazenar documentos de PDF de entrada usando umHashMap
construtor. -
Criar um
java.io.FileInputStream
usando seu construtor e transmitindo o local do documento PDF a ser desmontado. -
Criar um
com.adobe.idp.Document
objeto. Passe ojava.io.FileInputStream
objeto que contém o documento PDF a ser desmontado. -
Adicione uma entrada à
java.util.Map
ao invocar seuput
e transmitindo os seguintes argumentos:- Um valor de string que representa o nome da chave. Este valor deve corresponder ao valor do elemento de origem PDF especificado no documento DDX. (No documento DDX criado dinamicamente, o valor é
AssemblerResultPDF.pdf
.) - A
com.adobe.idp.Document
objeto que contém o documento PDF a ser desmontado.
- Um valor de string que representa o nome da chave. Este valor deve corresponder ao valor do elemento de origem PDF especificado no documento DDX. (No documento DDX criado dinamicamente, o valor é
-
-
Definir opções de tempo de execução.
- Criar um
AssemblerOptionSpec
objeto que armazena opções de tempo de execução usando seu construtor. - Defina opções de tempo de execução para atender aos requisitos da sua empresa, chamando um método que pertence à
AssemblerOptionSpec
objeto. Por exemplo, para instruir o serviço Assembler para continuar processando um job quando ocorrer um erro, chame oAssemblerOptionSpec
do objetosetFailOnError
e passarfalse
.
- Criar um
-
Desmonte o documento PDF.
Chame o
AssemblerServiceClient
do objetoinvokeDDX
e passe os seguintes valores:- A
com.adobe.idp.Document
objeto que representa o documento DDX criado dinamicamente - A
java.util.Map
objeto que contém o documento PDF a ser desmontado - A
com.adobe.livecycle.assembler.client.AssemblerOptionSpec
objeto que especifica as opções de tempo de execução, incluindo a fonte padrão e o nível de log do job
A variável
invokeDDX
o método retorna umcom.adobe.livecycle.assembler.client.AssemblerResult
objeto que contém os documentos PDF desmontados e quaisquer exceções que ocorreram. - A
-
Salve os documentos de PDF desmontados.
Para obter os documentos de PDF desmontados, execute as seguintes ações:
- Chame o
AssemblerResult
do objetogetDocuments
método. Este método retorna um valor dejava.util.Map
objeto. - Repita através do
java.util.Map
até encontrar o resultadocom.adobe.idp.Document
objeto. - Chame o
com.adobe.idp.Document
do objetocopyToFile
método para extrair o documento PDF.
- Chame o
Consulte também
Início rápido (modo SOAP): criando dinamicamente um documento DDX usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Definindo propriedades de conexão
Criar dinamicamente um documento DDX usando a API do serviço Web dynamically-create-a-ddx-document-using-the-web-service-api
Crie dinamicamente um documento DDX e desmonte um documento PDF usando a API de serviço do Assembler (serviço Web):
-
Incluir arquivos de projeto.
Crie um projeto Microsoft .NET que use MTOM. Certifique-se de usar a seguinte definição WSDL ao configurar uma referência de serviço:
http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
.note note NOTE Substituir localhost
com o endereço IP do servidor que hospeda o AEM Forms. -
Crie um cliente PDF Assembler.
-
Criar um
AssemblerServiceClient
usando seu construtor padrão. -
Criar um
AssemblerServiceClient.Endpoint.Address
usando oSystem.ServiceModel.EndpointAddress
construtor. Transmita um valor de string que especifique o WSDL para o serviço AEM Forms (por exemplo,http://localhost:8080/soap/services/AssemblerService?blob=mtom
). Não é necessário usar a variávellc_version
atributo. Esse atributo é usado quando você cria uma referência de serviço. -
Criar um
System.ServiceModel.BasicHttpBinding
obtendo o valor doAssemblerServiceClient.Endpoint.Binding
campo. Converter o valor de retorno emBasicHttpBinding
. -
Defina o
System.ServiceModel.BasicHttpBinding
do objetoMessageEncoding
campo paraWSMessageEncoding.Mtom
. Esse valor garante que a MTOM seja usada. -
Ative a autenticação HTTP básica executando as seguintes tarefas:
- Atribuir o nome de usuário dos formulários AEM ao campo
AssemblerServiceClient.ClientCredentials.UserName.UserName
. - Atribua o valor de senha correspondente ao campo
AssemblerServiceClient.ClientCredentials.UserName.Password
. - Atribuir o valor constante
HttpClientCredentialType.Basic
ao campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Atribuir o valor constante
BasicHttpSecurityMode.TransportCredentialOnly
ao campoBasicHttpBindingSecurity.Security.Mode
.
- Atribuir o nome de usuário dos formulários AEM ao campo
-
-
Crie o documento DDX.
-
Criar um
System.Xml.XmlElement
usando seu construtor. -
Crie o elemento raiz do documento DDX chamando o
XmlElement
do objetoCreateElement
método. Este método cria umElement
objeto que representa o elemento raiz. Transmita um valor de string que represente o nome do elemento para a variávelCreateElement
método. Defina um valor para o elemento DDX chamando seuSetAttribute
método. Por fim, anexe o elemento ao documento DDX chamando oXmlElement
do objetoAppendChild
método. Passe o objeto DDX como argumento. As linhas de código a seguir mostram essa lógica de aplicação:System.Xml.XmlElement root = ddx.CreateElement("DDX"); root.SetAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/"); ddx.AppendChild(root);
-
Crie o do documento DDX
PDFsFromBookmarks
ao chamar oXmlElement
do objetoCreateElement
método. Transmita um valor de string que represente o nome do elemento para a variávelCreateElement
método. Em seguida, defina um valor para o elemento chamando seuSetAttribute
método. Anexe oPDFsFromBookmarks
elemento ao elemento raiz chamando oDDX
do elementoAppendChild
método. Passe oPDFsFromBookmarks
objeto de elemento como argumento. As linhas de código a seguir mostram essa lógica de aplicação:XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks);
-
Crie o do documento DDX
PDF
ao chamar oXmlElement
do objetoCreateElement
método. Transmita um valor de string que represente o nome do elemento para a variávelCreateElement
método. Em seguida, defina um valor para o elemento filho chamando seuSetAttribute
método. Anexe oPDF
elemento para oPDFsFromBookmarks
ao chamar oPDFsFromBookmarks
do elementoAppendChild
método. Passe oPDF
objeto de elemento como argumento. As linhas de código a seguir mostram essa lógica de aplicação:XmlElement PDF = ddx.CreateElement("PDF"); PDF.SetAttribute("source", "AssemblerResultPDF.pdf"); PDFsFromBookmarks.AppendChild(PDF);
-
-
Converta o documento DDX.
-
Criar um
System.IO.MemoryStream
usando seu construtor. -
Preencha o
MemoryStream
com o documento DDX usando oXmlElement
objeto que representa o documento DDX. Chame oXmlElement
do objetoSave
e transmita oMemoryStream
objeto. -
Crie uma matriz de bytes e preencha-a com dados na variável
MemoryStream
objeto. O código a seguir mostra essa lógica de aplicação:int bufLen = Convert.ToInt32(stream.Length); byte[] byteArray = new byte[bufLen]; stream.Position = 0; int count = stream.Read(byteArray, 0, bufLen);
-
Criar um
BLOB
objeto. Atribua a matriz de bytes à variávelBLOB
do objetoMTOM
campo.
-
-
Referencie um documento do PDF para desmontar.
- Criar um
BLOB
usando seu construtor. A variávelBLOB
objeto é usado para armazenar o documento PDF de entrada. EsteBLOB
objeto é passado para oinvokeOneDocument
como argumento. - Criar um
System.IO.FileStream
invocando seu construtor. Transmita um valor de string que represente o local do arquivo do PDF de entrada e o modo no qual o arquivo será aberto. - Crie uma matriz de bytes que armazene o conteúdo da variável
System.IO.FileStream
objeto. Você pode determinar o tamanho da matriz de bytes obtendo oSystem.IO.FileStream
do objetoLength
propriedade. - Preencha a matriz de bytes com dados de fluxo invocando o
System.IO.FileStream
do objetoRead
e transmitindo a matriz de bytes, a posição inicial e o comprimento do fluxo para leitura. - Preencha o
BLOB
atribuindo seuMTOM
propriedade o conteúdo da matriz de bytes.
- Criar um
-
Definir opções de tempo de execução.
- Criar um
AssemblerOptionSpec
objeto que armazena opções de tempo de execução usando seu construtor. - Defina opções de tempo de execução para atender aos requisitos da sua empresa atribuindo um valor a um membro de dados que pertença à
AssemblerOptionSpec
objeto. Por exemplo, para instruir o serviço Assembler a continuar processando um job quando ocorrer um erro, atribuafalse
para oAssemblerOptionSpec
do objetofailOnError
membro de dados.
- Criar um
-
Desmonte o documento PDF.
Chame o
AssemblerServiceClient
do objetoinvokeDDX
e passe os seguintes valores:- A
BLOB
objeto que representa o documento DDX criado dinamicamente - A variável
mapItem
matriz que contém o documento PDF de entrada - Um
AssemblerOptionSpec
objeto que especifica as opções de tempo de execução
A variável
invokeDDX
o método retorna umAssemblerResult
objeto que contém os resultados do trabalho e quaisquer exceções que ocorreram. - A
-
Salve os documentos de PDF desmontados.
Para obter os documentos PDF recém-criados, execute as seguintes ações:
- Acesse o
AssemblerResult
do objetodocuments
que é umMap
objeto que contém os documentos PDF desmontados. - Repita através do
Map
para obter cada documento resultante. Em seguida, converta os membros da matrizvalue
para umBLOB
. - Extraia os dados binários que representam o documento PDF acessando seus
BLOB
do objetoMTOM
propriedade. Isso retorna uma matriz de bytes que você pode gravar em um arquivo PDF.
- Acesse o
Consulte também
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef