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
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
ServiceClientFactoryobjeto que contém propriedades de conexão. - Crie um
AssemblerServiceClientusando seu construtor e passando oServiceClientFactoryobjeto.
- Crie um
-
Crie o documento DDX.
-
Criar um Java
DocumentBuilderFactorychamando oDocumentBuilderFactoryclasse"newInstancemétodo . -
Criar um Java
DocumentBuilderchamando oDocumentBuilderFactorydo objetonewDocumentBuildermétodo . -
Chame o
DocumentBuilderdo objetonewDocumentpara instanciar umorg.w3c.dom.Documentobjeto. -
Crie o elemento raiz do documento DDX chamando a função
org.w3c.dom.Documentdo objetocreateElementmétodo . Esse método cria umElementobjeto que representa o elemento raiz. Passe um valor de string representando o nome do elemento para acreateElementmétodo . Converta o valor de retorno paraElement. Em seguida, defina um valor para o elemento filho, chamando seusetAttributemétodo . Finalmente, anexe o elemento ao elemento de cabeçalho ao chamar a função do elemento de cabeçalhoappendChilde 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
PDFsFromBookmarkschamando oDocumentdo objetocreateElementmétodo . Passe um valor de string representando o nome do elemento para acreateElementmétodo . Converta o valor de retorno paraElement. Defina um valor para a variávelPDFsFromBookmarkselemento chamando seusetAttributemétodo . Anexar oPDFsFromBookmarksparaDDXchamando o elemento DDXappendChildmétodo . Passe oPDFsFromBookmarksobjeto 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
PDFchamando oDocumentdo objetocreateElementmétodo . Passe um valor de string que representa o nome do elemento. Converta o valor de retorno paraElement. Defina um valor para a variávelPDFelemento chamando seusetAttributemétodo . Anexar oPDFparaPDFsFromBookmarkschamando oPDFsFromBookmarkselement'sappendChildmétodo . Passe oPDFobjeto 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.Transformerchamando ojavax.xml.transform.Transformerestático do objetonewInstancemétodo . - Crie um
Transformerchamando oTransformerFactorydo objetonewTransformermétodo . - Crie um
ByteArrayOutputStreamusando seu construtor. - Crie um
javax.xml.transform.dom.DOMSourceusando seu construtor. Passe oorg.w3c.dom.Documentobjeto que representa o documento DDX. - Crie um
javax.xml.transform.dom.DOMSourceusando seu construtor e passando oByteArrayOutputStreamobjeto. - Preencha o Java
ByteArrayOutputStreamchamando ojavax.xml.transform.Transformerdo objetotransformmétodo . Passe ojavax.xml.transform.dom.DOMSourceejavax.xml.transform.stream.StreamResultobjetos. - Crie uma matriz de bytes e aloque o tamanho da variável
ByteArrayOutputStreampara a matriz de bytes. - Preencha a matriz de bytes chamando o
ByteArrayOutputStreamdo objetotoByteArraymétodo . - Crie um
com.adobe.idp.Documentusando seu construtor e transmitindo a matriz de bytes.
- Crie um
-
Faça referência a um documento PDF para desmontar.
-
Crie um
java.util.Mapobjeto usado para armazenar documentos PDF de entrada usando umHashMapconstrutor. -
Crie um
java.io.FileInputStreamusando seu construtor e passando o local do documento PDF para desmontar. -
Crie um
com.adobe.idp.Documentobjeto. Passe ojava.io.FileInputStreamobjeto que contém o documento PDF para desmontagem. -
Adicione uma entrada à
java.util.Mapao invocar seupute 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.Documentobjeto 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
AssemblerOptionSpecque 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
AssemblerOptionSpecobjeto. Por exemplo, para instruir o serviço Assembler a continuar o processamento de uma tarefa quando ocorrer um erro, chame a funçãoAssemblerOptionSpecdo objetosetFailOnErrormétodo e passfalse.
- Crie um
-
Desmonte o documento PDF.
Chame o
AssemblerServiceClientdo objetoinvokeDDXe transmita os seguintes valores:- A
com.adobe.idp.Documentobjeto que representa o documento DDX criado dinamicamente - A
java.util.Mapobjeto que contém o documento PDF para desmontar - A
com.adobe.livecycle.assembler.client.AssemblerOptionSpecobjeto que especifica as opções de tempo de execução, incluindo a fonte padrão e o nível de log da tarefa
O
invokeDDXmétodo retorna umcom.adobe.livecycle.assembler.client.AssemblerResultobjeto 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
AssemblerResultdo objetogetDocumentsmétodo . Esse método retorna umjava.util.Mapobjeto. - Iterar por meio do
java.util.Mapaté encontrar o resultantecom.adobe.idp.Documentobjeto. - Chame o
com.adobe.idp.Documentdo objetocopyToFilepara 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
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 localhostcom o endereço IP do servidor que hospeda a AEM Forms. -
Crie um cliente Assembler PDF.
-
Crie um
AssemblerServiceClientusando seu construtor padrão. -
Crie um
AssemblerServiceClient.Endpoint.Addressusando oSystem.ServiceModel.EndpointAddressconstrutor. 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_versionatributo. Esse atributo é usado ao criar uma referência de serviço. -
Crie um
System.ServiceModel.BasicHttpBindingobtendo o valor da variávelAssemblerServiceClient.Endpoint.Bindingcampo. Converta o valor de retorno paraBasicHttpBinding. -
Defina as
System.ServiceModel.BasicHttpBindingdo objetoMessageEncodingcampo 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.Basicao campoBasicHttpBindingSecurity.Transport.ClientCredentialType. - Atribuir o valor constante
BasicHttpSecurityMode.TransportCredentialOnlyao campoBasicHttpBindingSecurity.Security.Mode.
- Atribuir o nome de usuário dos formulários AEM ao campo
-
-
Crie o documento DDX.
-
Crie um
System.Xml.XmlElementusando seu construtor. -
Crie o elemento raiz do documento DDX chamando a função
XmlElementdo objetoCreateElementmétodo . Esse método cria umElementobjeto que representa o elemento raiz. Passe um valor de string representando o nome do elemento para aCreateElementmétodo . Defina um valor para o elemento DDX chamando seuSetAttributemétodo . Por fim, anexe o elemento ao documento DDX ao chamar a funçãoXmlElementdo objetoAppendChildmé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
PDFsFromBookmarkschamando oXmlElementdo objetoCreateElementmétodo . Passe um valor de string representando o nome do elemento para aCreateElementmétodo . Em seguida, defina um valor para o elemento chamando seuSetAttributemétodo . Anexar oPDFsFromBookmarkspara o elemento raiz, chamando a funçãoDDXelement'sAppendChildmétodo . Passe oPDFsFromBookmarksobjeto 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
PDFchamando oXmlElementdo objetoCreateElementmétodo . Passe um valor de string representando o nome do elemento para aCreateElementmétodo . Em seguida, defina um valor para o elemento filho, chamando seuSetAttributemétodo . Anexar oPDFparaPDFsFromBookmarkschamando oPDFsFromBookmarkselement'sAppendChildmétodo . Passe oPDFobjeto 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.MemoryStreamusando seu construtor. -
Preencha o
MemoryStreamcom o documento DDX usando oXmlElementobjeto que representa o documento DDX. Chame oXmlElementdo objetoSavee passe oMemoryStreamobjeto. -
Crie uma matriz de bytes e preencha-a com os dados localizados na
MemoryStreamobjeto. 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
BLOBobjeto. Atribua a matriz de bytes àBLOBdo objetoMTOMcampo.
-
-
Faça referência a um documento PDF para desmontar.
- Crie um
BLOBusando seu construtor. OBLOBé usado para armazenar o documento PDF de entrada. EssaBLOBé passado para oinvokeOneDocumentcomo um argumento. - Crie um
System.IO.FileStreamchamando 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.FileStreamobjeto. Você pode determinar o tamanho da matriz de bytes obtendo a variávelSystem.IO.FileStreamdo objetoLengthpropriedade. - Preencha a matriz de bytes com dados de fluxo chamando a variável
System.IO.FileStreamdo objetoReade transmitindo a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido. - Preencha o
BLOBao atribuir seuMTOMpropriedade do conteúdo da matriz de bytes.
- Crie um
-
Defina as opções de tempo de execução.
- Crie um
AssemblerOptionSpecque 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 à
AssemblerOptionSpecobjeto. Por exemplo, para instruir o serviço Assembler a continuar o processamento de uma tarefa quando ocorrer um erro, atribuafalseparaAssemblerOptionSpecdo objetofailOnErrormembro de dados.
- Crie um
-
Desmonte o documento PDF.
Chame o
AssemblerServiceClientdo objetoinvokeDDXe transmita os seguintes valores:- A
BLOBobjeto que representa o documento DDX criado dinamicamente - O
mapItemmatriz que contém o documento PDF de entrada - Um
AssemblerOptionSpecobjeto que especifica as opções de tempo de execução
O
invokeDDXretorna um métodoAssemblerResultobjeto 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
AssemblerResultdo objetodocuments, que é umMapobjeto que contém os documentos PDF desmontados. - Iterar por meio do
Mappara obter cada documento resultante. Em seguida, converta esse membro da matrizvalueparaBLOB. - Extraia os dados binários que representam o documento PDF acessando seu
BLOBdo objetoMTOMpropriedade. 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