Criação dinâmica de documentos DDX dynamically-creating-ddx-documents
Você pode criar dinamicamente um documento DDX que possa ser usado para executar uma operação Assembler. Criar dinamicamente um documento DDX permite usar valores no documento DDX obtidos durante o tempo de execução. Para criar dinamicamente um documento DDX, use classes que pertencem à 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 pertencem ao System.Xml
namespace.
Antes de passar o documento DDX para o serviço Assembler, converta o XML de um org.w3c.dom.Document
para uma com.adobe.idp.Document
instância. Se você estiver usando serviços da Web, converta o XML do tipo de dados usado para criar o XML (por exemplo, XmlDocument
) a um BLOB
instância.
Para essa discussão, suponha que o seguinte documento DDX 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. Recomenda-se 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:
- Inclua arquivos de projeto.
- Crie um cliente Assembler PDF.
- Crie o documento DDX.
- Converta o documento DDX.
- Defina as 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 um aplicativo 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 seu projeto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-assembler-client.jar
- adobe-utilities.jar (necessário se o AEM Forms estiver implantado no JBoss)
- jbossall-client.jar (obrigatório se o AEM Forms for implantado no JBoss)
Criar um cliente do Assembler do PDF
Antes de executar programaticamente uma operação Assembler, crie um cliente de serviço 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 desmonta um documento PDF, verifique se ele contém a variável PDFsFromBookmarks
elemento. Converter o tipo de dados usado para criar o documento DDX em um com.adobe.idp.Document
se estiver usando a API do 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
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.
Referência a um documento PDF para desmontar
Para desmontar um documento PDF, consulte um arquivo PDF que representa o documento PDF para desmontar. 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 uma tarefa. Por exemplo, você pode definir uma opção que instrua o serviço Assembler a continuar processando um trabalho se um erro for encontrado. Para definir opções de tempo de execução, use um AssemblerOptionSpec
objeto.
Desmonte o documento PDF
Desmonte o documento PDF chamando a invokeDDX
operação. Passe o documento DDX que foi 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 PDF desmontados são retornados em um objeto de coleção. Itere pelo objeto de coleção e salve cada documento PDF como um arquivo PDF.
Consulte também
Criar dinamicamente um documento DDX usando a API Java
Criar dinamicamente um documento DDX usando a API do serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Desmontando documentos do PDF de maneira programática
Criar dinamicamente um documento DDX usando a API Java dynamically-create-a-ddx-document-using-the-java-api
Crie dinamicamente um documento DDX e desmonte um documento PDF usando a API do serviço de Assembler (Java):
-
Inclua arquivos de projeto.
Inclua arquivos JAR do cliente, como adobe-assembler-client.jar, no caminho de classe do seu projeto Java.
-
Crie um cliente Assembler PDF.
- Crie um
ServiceClientFactory
objeto que contém propriedades de conexão. - Crie um
AssemblerServiceClient
usando seu construtor e passando oServiceClientFactory
objeto.
- Crie um
-
Crie o documento DDX.
-
Criar um Java
DocumentBuilderFactory
chamando oDocumentBuilderFactory
classe"newInstance
método . -
Criar um Java
DocumentBuilder
chamando oDocumentBuilderFactory
do objetonewDocumentBuilder
método . -
Chame o
DocumentBuilder
do objetonewDocument
para instanciar umorg.w3c.dom.Document
objeto. -
Crie o elemento raiz do documento DDX chamando a função
org.w3c.dom.Document
do objetocreateElement
método . Esse método cria umElement
objeto que representa o elemento raiz. Passe um valor de string representando o nome do elemento para acreateElement
método . Converta o valor de retorno paraElement
. Em seguida, defina um valor para o elemento filho, chamando seusetAttribute
método . Finalmente, anexe o elemento ao elemento de cabeçalho ao chamar a funçã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 aplicativo:Element root = (Element)document.createElement("DDX"); root.setAttribute("xmlns","https://ns.adobe.com/DDX/1.0/"); document.appendChild(root);
-
Crie o
PDFsFromBookmarks
chamando oDocument
do objetocreateElement
método . Passe um valor de string representando o nome do elemento para acreateElement
método . Converta o valor de retorno paraElement
. Defina um valor para a variávelPDFsFromBookmarks
elemento chamando seusetAttribute
método . Anexar oPDFsFromBookmarks
paraDDX
chamando o elemento DDXappendChild
método . Passe oPDFsFromBookmarks
objeto de elemento como um argumento. As linhas de código a seguir mostram essa lógica de aplicativo:Element PDFsFromBookmarks = (Element)document.createElement("PDFsFromBookmarks"); PDFsFromBookmarks.setAttribute("prefix","stmt"); root.appendChild(PDFsFromBookmarks);
-
Crie um
PDF
chamando oDocument
do objetocreateElement
método . Passe um valor de string que representa o nome do elemento. Converta o valor de retorno paraElement
. Defina um valor para a variávelPDF
elemento chamando seusetAttribute
método . Anexar oPDF
paraPDFsFromBookmarks
chamando oPDFsFromBookmarks
element'sappendChild
método . Passe oPDF
objeto de elemento como um argumento. As linhas de código a seguir mostram essa lógica de aplicativo:Element PDF = (Element)document.createElement("PDF"); PDF.setAttribute("source","AssemblerResultPDF.pdf"); PDFsFromBookmarks.appendChild(PDF);
-
-
Converta o documento DDX.
- Crie um
javax.xml.transform.Transformer
chamando ojavax.xml.transform.Transformer
estático do objetonewInstance
método . - Crie um
Transformer
chamando oTransformerFactory
do objetonewTransformer
método . - Crie um
ByteArrayOutputStream
usando seu construtor. - Crie um
javax.xml.transform.dom.DOMSource
usando seu construtor. Passe oorg.w3c.dom.Document
objeto que representa o documento DDX. - Crie um
javax.xml.transform.dom.DOMSource
usando seu construtor e passando oByteArrayOutputStream
objeto. - Preencha o Java
ByteArrayOutputStream
chamando ojavax.xml.transform.Transformer
do objetotransform
método . Passe ojavax.xml.transform.dom.DOMSource
ejavax.xml.transform.stream.StreamResult
objetos. - Crie uma matriz de bytes e aloque o tamanho da variável
ByteArrayOutputStream
para a matriz de bytes. - Preencha a matriz de bytes chamando o
ByteArrayOutputStream
do objetotoByteArray
método . - Crie um
com.adobe.idp.Document
usando seu construtor e transmitindo a matriz de bytes.
- Crie um
-
Faça referência a um documento PDF para desmontar.
-
Crie um
java.util.Map
objeto usado para armazenar documentos PDF de entrada usando umHashMap
construtor. -
Crie um
java.io.FileInputStream
usando seu construtor e passando o local do documento PDF para desmontar. -
Crie um
com.adobe.idp.Document
objeto. Passe ojava.io.FileInputStream
objeto que contém o documento PDF para desmontagem. -
Adicione uma entrada à
java.util.Map
ao invocar seuput
e transmitindo os seguintes argumentos:- Um valor de string que representa o nome da chave. Esse valor deve corresponder ao valor do elemento PDF source 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 para desmontagem.
- Um valor de string que representa o nome da chave. Esse valor deve corresponder ao valor do elemento PDF source especificado no documento DDX. (No documento DDX criado dinamicamente, o valor é
-
-
Defina as opções de tempo de execução.
- Crie um
AssemblerOptionSpec
que armazena opções de tempo de execução usando seu construtor. - Defina as opções de tempo de execução para atender aos seus requisitos de negócios, chamando um método que pertence ao
AssemblerOptionSpec
objeto. Por exemplo, para instruir o serviço Assembler a continuar o processamento de uma tarefa quando ocorrer um erro, chame a funçãoAssemblerOptionSpec
do objetosetFailOnError
método e passfalse
.
- Crie um
-
Desmonte o documento PDF.
Chame o
AssemblerServiceClient
do objetoinvokeDDX
e transmita 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 para desmontar - 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 da tarefa
O
invokeDDX
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 . Esse método retorna umjava.util.Map
objeto. - Iterar por meio do
java.util.Map
até encontrar o resultantecom.adobe.idp.Document
objeto. - Chame o
com.adobe.idp.Document
do objetocopyToFile
para extrair o documento PDF.
- Chame o
Consulte também
Início rápido (modo SOAP): Criação dinâmica de um documento DDX usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Criar dinamicamente um documento DDX usando a API do serviço da Web dynamically-create-a-ddx-document-using-the-web-service-api
Crie dinamicamente um documento DDX e desmonte um documento PDF usando a API do serviço Assembler (serviço da Web):
-
Inclua arquivos de projeto.
Crie um projeto Microsoft .NET que use MTOM. Certifique-se de usar a seguinte definição WSDL ao definir 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 a AEM Forms. -
Crie um cliente Assembler PDF.
-
Crie um
AssemblerServiceClient
usando seu construtor padrão. -
Crie um
AssemblerServiceClient.Endpoint.Address
usando oSystem.ServiceModel.EndpointAddress
construtor. Passe um valor de string que especifica o WSDL para o serviço do 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 ao criar uma referência de serviço. -
Crie um
System.ServiceModel.BasicHttpBinding
obtendo o valor da variávelAssemblerServiceClient.Endpoint.Binding
campo. Converta o valor de retorno paraBasicHttpBinding
. -
Defina as
System.ServiceModel.BasicHttpBinding
do objetoMessageEncoding
campo paraWSMessageEncoding.Mtom
. Esse valor garante que o MTOM seja usado. -
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 correspondente da senha 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.
-
Crie um
System.Xml.XmlElement
usando seu construtor. -
Crie o elemento raiz do documento DDX chamando a função
XmlElement
do objetoCreateElement
método . Esse método cria umElement
objeto que representa o elemento raiz. Passe um valor de string representando o nome do elemento para aCreateElement
método . Defina um valor para o elemento DDX chamando seuSetAttribute
método . Por fim, anexe o elemento ao documento DDX ao chamar a funçãoXmlElement
do objetoAppendChild
método . Passe o objeto DDX como um argumento. As linhas de código a seguir mostram essa lógica de aplicativo:System.Xml.XmlElement root = ddx.CreateElement("DDX"); root.SetAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/"); ddx.AppendChild(root);
-
Crie o documento DDX
PDFsFromBookmarks
chamando oXmlElement
do objetoCreateElement
método . Passe um valor de string representando o nome do elemento para aCreateElement
método . Em seguida, defina um valor para o elemento chamando seuSetAttribute
método . Anexar oPDFsFromBookmarks
para o elemento raiz, chamando a funçãoDDX
element'sAppendChild
método . Passe oPDFsFromBookmarks
objeto de elemento como um argumento. As linhas de código a seguir mostram essa lógica de aplicativo:XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks);
-
Crie o documento DDX
PDF
chamando oXmlElement
do objetoCreateElement
método . Passe um valor de string representando o nome do elemento para aCreateElement
método . Em seguida, defina um valor para o elemento filho, chamando seuSetAttribute
método . Anexar oPDF
paraPDFsFromBookmarks
chamando oPDFsFromBookmarks
element'sAppendChild
método . Passe oPDF
objeto de elemento como um argumento. As linhas de código a seguir mostram essa lógica de aplicativo:XmlElement PDF = ddx.CreateElement("PDF"); PDF.SetAttribute("source", "AssemblerResultPDF.pdf"); PDFsFromBookmarks.AppendChild(PDF);
-
-
Converta o documento DDX.
-
Crie 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 passe oMemoryStream
objeto. -
Crie uma matriz de bytes e preencha-a com os dados localizados na
MemoryStream
objeto. O código a seguir mostra essa lógica do aplicativo:int bufLen = Convert.ToInt32(stream.Length); byte[] byteArray = new byte[bufLen]; stream.Position = 0; int count = stream.Read(byteArray, 0, bufLen);
-
Crie um
BLOB
objeto. Atribua a matriz de bytes àBLOB
do objetoMTOM
campo.
-
-
Faça referência a um documento PDF para desmontar.
- Crie um
BLOB
usando seu construtor. OBLOB
é usado para armazenar o documento PDF de entrada. EssaBLOB
é passado para oinvokeOneDocument
como um argumento. - Crie um
System.IO.FileStream
chamando seu construtor. Passe um valor de string que representa o local do arquivo do documento PDF de entrada e o modo no qual o arquivo deve 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 a variávelSystem.IO.FileStream
do objetoLength
propriedade. - Preencha a matriz de bytes com dados de fluxo chamando a variável
System.IO.FileStream
do objetoRead
e transmitindo a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido. - Preencha o
BLOB
ao atribuir seuMTOM
propriedade do conteúdo da matriz de bytes.
- Crie um
-
Defina as opções de tempo de execução.
- Crie um
AssemblerOptionSpec
que armazena opções de tempo de execução usando seu construtor. - Defina as opções de tempo de execução para atender aos requisitos da empresa, atribuindo um valor a um membro de dados pertencente à
AssemblerOptionSpec
objeto. Por exemplo, para instruir o serviço Assembler a continuar o processamento de uma tarefa quando ocorrer um erro, atribuafalse
paraAssemblerOptionSpec
do objetofailOnError
membro de dados.
- Crie um
-
Desmonte o documento PDF.
Chame o
AssemblerServiceClient
do objetoinvokeDDX
e transmita os seguintes valores:- A
BLOB
objeto que representa o documento DDX criado dinamicamente - O
mapItem
matriz que contém o documento PDF de entrada - Um
AssemblerOptionSpec
objeto que especifica as opções de tempo de execução
O
invokeDDX
retorna um métodoAssemblerResult
objeto que contém os resultados da tarefa 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. - Iterar por meio do
Map
para obter cada documento resultante. Em seguida, converta esse membro da matrizvalue
paraBLOB
. - Extraia os dados binários que representam o documento PDF acessando seu
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