Montagem de um design de formulário montado usando fragmentos
Você pode montar um design de formulário para passá-lo para o serviço Forms com base em vários fragmentos. Para montar vários fragmentos, use o serviço Assembler. Para ver um exemplo de uso do serviço de Montagem para criar um design de formulário usado por outros serviços do Forms (o serviço de Saída), consulte Criação de Documentos de PDF usando Fragmentos. Em vez de usar o Serviço de saída, você pode executar o mesmo fluxo de trabalho usando o serviço Forms.
Ao usar o serviço Assembler, você está transmitindo um design de formulário que foi montado usando fragmentos. O design do formulário criado não faz referência a outros fragmentos. Por outro lado, este tópico discute a transmissão de um design de formulário que faz referência a outros fragmentos para o serviço do Forms. No entanto, o design do formulário não foi montado pela Assembler. Ele foi criado no Designer.
Resumo das etapas
Para renderizar um formulário com base em fragmentos, execute as seguintes tarefas:
- Incluir arquivos de projeto.
- Crie um objeto da API do cliente do Forms.
- Especifique valores de URI.
- Renderize o formulário.
- Grave o fluxo de dados do formulário no navegador da Web do cliente.
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.
Criar um objeto da API do cliente do Forms
Antes de executar programaticamente uma operação da API do cliente de serviço do Forms, você deve criar um cliente de serviço do Forms.
Especificar valores de URI
Para renderizar com êxito um formulário com base em fragmentos, você deve garantir que o serviço do Forms possa localizar o formulário e os fragmentos (os arquivos XDP) aos quais o design do formulário faz referência. Por exemplo, suponha que o formulário seja chamado PO.xdp e esse formulário use dois fragmentos chamados FooterUS.xdp e FooterCanada.xdp. Nessa situação, o serviço Forms deve ser capaz de localizar todos os três arquivos XDP.
Você pode organizar um formulário e seus fragmentos colocando o formulário em um local e os fragmentos em outro local, ou pode colocar todos os arquivos XDP no mesmo local. Para os fins desta seção, considere que todos os arquivos XDP estão no repositório do AEM Forms. Para obter informações sobre como colocar arquivos XDP no repositório do AEM Forms, consulte Recursos de Escrita.
Ao renderizar um formulário com base em fragmentos, você deve fazer referência somente ao próprio formulário e não aos fragmentos. Por exemplo, você deve fazer referência a PO.xdp e não a FooterUS.xdp ou FooterCanada.xdp. Certifique-se de colocar os fragmentos em um local em que o serviço do Forms possa localizá-los.
Renderizar o formulário
Um formulário baseado em fragmentos pode ser renderizado da mesma maneira que formulários não fragmentados. Ou seja, você pode renderizar o formulário como PDF, HTML ou Guias de formulário (obsoleto). O exemplo nesta seção renderiza um formulário com base em fragmentos como um formulário PDF interativo. (Consulte Renderização de PDF forms interativos.)
Gravar o fluxo de dados de formulário no navegador Web cliente
Quando o serviço Forms renderiza um formulário, ele retorna um fluxo de dados de formulário que você deve gravar no navegador da Web do cliente. Quando gravado no navegador da Web do cliente, o formulário fica visível para o usuário.
Consulte também
Renderizar formulários com base em fragmentos usando a API Java
Renderizar formulários com base em fragmentos usando a API do serviço Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Definindo propriedades de conexão
Início rápido da API de serviço do Forms
Renderizar formulários com base em fragmentos usando a API Java
Renderize um formulário com base em fragmentos usando a API do Forms (Java):
-
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-forms-client.jar, no caminho de classe do projeto Java.
-
Criar um objeto da API do cliente do Forms
- Crie um objeto
ServiceClientFactoryque contenha propriedades de conexão. - Crie um objeto
FormsServiceClientusando seu construtor e transmitindo o objetoServiceClientFactory.
- Crie um objeto
-
Especificar valores de URI
- Crie um objeto
URLSpecque armazene valores de URI usando seu construtor. - Invoque o método
setApplicationWebRootdo objetoURLSpece passe um valor de cadeia de caracteres que represente a raiz da Web do aplicativo. - Invoque o método
setContentRootURIdo objetoURLSpece passe um valor de cadeia de caracteres que especifique o valor de URI da raiz do conteúdo. Verifique se o design do formulário e os fragmentos estão no URI da raiz de conteúdo. Caso contrário, o serviço Forms acionará uma exceção. Para referenciar o repositório, especifiquerepository://. - Invoque o método
setTargetURLdo objetoURLSpece passe um valor de cadeia de caracteres que especifique o valor da URL de destino para onde os dados de formulário são postados. Se você definir o URL de destino no design do formulário, será possível passar uma cadeia de caracteres vazia. Você também pode especificar a URL para onde um formulário é enviado para realizar cálculos.
- Crie um objeto
-
Renderizar o formulário
Chame o método
renderPDFFormdo objetoFormsServiceCliente passe os seguintes valores:- Um valor de cadeia de caracteres que especifica o nome de design do formulário, incluindo a extensão de nome de arquivo. Se você referenciar um design de formulário que faça parte de um aplicativo do Forms, certifique-se de especificar o caminho completo, como
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp. - Um objeto
com.adobe.idp.Documentque contém dados para mesclar com o formulário. Se não quiser mesclar dados, passe um objetocom.adobe.idp.Documentvazio. - Um objeto
PDFFormRenderSpecque armazena opções de tempo de execução. - Um objeto
URLSpecque contém valores de URI exigidos pelo serviço Forms para renderizar um formulário com base em fragmentos. - Um objeto
java.util.HashMapque armazena anexos de arquivo. Este é um parâmetro opcional e você pode especificarnullse não quiser anexar arquivos ao formulário.
O método
renderPDFFormretorna um objetoFormsResultque contém um fluxo de dados de formulário que deve ser gravado no navegador Web cliente. - Um valor de cadeia de caracteres que especifica o nome de design do formulário, incluindo a extensão de nome de arquivo. Se você referenciar um design de formulário que faça parte de um aplicativo do Forms, certifique-se de especificar o caminho completo, como
-
Gravar o fluxo de dados do formulário no navegador Web cliente
- Crie um objeto
com.adobe.idp.Documentinvocando o métodogetOutputContentdo objetoFormsResult. - Obtenha o tipo de conteúdo do objeto
com.adobe.idp.Documentinvocando seu métodogetContentType. - Defina o tipo de conteúdo do objeto
javax.servlet.http.HttpServletResponseinvocando seu métodosetContentTypee transmitindo o tipo de conteúdo do objetocom.adobe.idp.Document. - Crie um objeto
javax.servlet.ServletOutputStreamusado para gravar o fluxo de dados de formulário no navegador da Web cliente, chamando o métodogetOutputStreamdo objetojavax.servlet.http.HttpServletResponse. - Crie um objeto
java.io.InputStreaminvocando o métodogetInputStreamdo objetocom.adobe.idp.Document. - Crie uma matriz de bytes para preenchê-la com o fluxo de dados de formulário, chamando o método
readdo objetoInputStreame transmitindo a matriz de bytes como argumento. - Invoque o método
writedo objetojavax.servlet.ServletOutputStreampara enviar o fluxo de dados de formulário para o navegador da Web cliente. Passar a matriz de bytes para o métodowrite.
- Crie um objeto
Renderizar formulários com base em fragmentos usando a API do serviço Web
Renderize um formulário com base em fragmentos usando a API do Forms (serviço da Web):
-
Incluir arquivos de projeto
- Crie classes de proxy Java que consomem o serviço WSDL do Forms.
- Inclua as classes de proxy Java no caminho da classe.
-
Criar um objeto da API do cliente do Forms
Crie um objeto
FormsServicee defina valores de autenticação. -
Especificar valores de URI
- Crie um objeto
URLSpecque armazene valores de URI usando seu construtor. - Invoque o método
setApplicationWebRootdo objetoURLSpece passe um valor de cadeia de caracteres que represente a raiz da Web do aplicativo. - Invoque o método
setContentRootURIdo objetoURLSpece passe um valor de cadeia de caracteres que especifique o valor de URI da raiz do conteúdo. Verifique se o design do formulário está no URI da raiz do conteúdo. Caso contrário, o serviço Forms acionará uma exceção. Para referenciar o repositório, especifiquerepository://. - Invoque o método
setTargetURLdo objetoURLSpece passe um valor de cadeia de caracteres que especifique o valor da URL de destino para onde os dados de formulário são postados. Se você definir o URL de destino no design do formulário, será possível passar uma cadeia de caracteres vazia. Você também pode especificar a URL para onde um formulário é enviado para realizar cálculos.
- Crie um objeto
-
Renderizar o formulário
Chame o método
renderPDFFormdo objetoFormsServicee passe os seguintes valores:- Um valor de cadeia de caracteres que especifica o nome de design do formulário, incluindo a extensão de nome de arquivo. Se você referenciar um design de formulário que faça parte de um aplicativo do Forms, certifique-se de especificar o caminho completo, como
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp. - Um objeto
BLOBque contém dados para mesclar com o formulário. Se não quiser mesclar dados, passenull. - Um objeto
PDFFormRenderSpecque armazena opções de tempo de execução. A opção PDF marcado não poderá ser definida se o documento de entrada for um documento PDF. Se o arquivo de entrada for um arquivo XDP, a opção PDF com tags poderá ser definida. - Um objeto
URLSpecque contém valores de URI exigidos pelo serviço Forms. - Um objeto
java.util.HashMapque armazena anexos de arquivo. Este é um parâmetro opcional e você pode especificarnullse não quiser anexar arquivos ao formulário. - Um objeto
com.adobe.idp.services.holders.BLOBHoldervazio preenchido pelo método. Esse parâmetro é usado para armazenar o formulário renderizado. - Um objeto
javax.xml.rpc.holders.LongHoldervazio preenchido pelo método. Esse argumento armazenará o número de páginas no formulário. - Um objeto
javax.xml.rpc.holders.StringHoldervazio preenchido pelo método. Esse argumento armazenará o valor do local. - Um objeto
com.adobe.idp.services.holders.FormsResultHoldervazio que conterá os resultados desta operação.
O método
renderPDFFormpreenche o objetocom.adobe.idp.services.holders.FormsResultHolderque é passado como o último valor de argumento com um fluxo de dados de formulário que deve ser gravado no navegador Web cliente. - Um valor de cadeia de caracteres que especifica o nome de design do formulário, incluindo a extensão de nome de arquivo. Se você referenciar um design de formulário que faça parte de um aplicativo do Forms, certifique-se de especificar o caminho completo, como
-
Gravar o fluxo de dados do formulário no navegador Web cliente
- Crie um objeto
FormResultobtendo o valor do membro de dadosvaluedo objetocom.adobe.idp.services.holders.FormsResultHolder. - Crie um objeto
BLOBque contenha dados de formulário invocando o métodogetOutputContentdo objetoFormsResult. - Obtenha o tipo de conteúdo do objeto
BLOBinvocando seu métodogetContentType. - Defina o tipo de conteúdo do objeto
javax.servlet.http.HttpServletResponseinvocando seu métodosetContentTypee transmitindo o tipo de conteúdo do objetoBLOB. - Crie um objeto
javax.servlet.ServletOutputStreamusado para gravar o fluxo de dados de formulário no navegador da Web cliente, chamando o métodogetOutputStreamdo objetojavax.servlet.http.HttpServletResponse. - Crie uma matriz de bytes e preencha-a chamando o método
getBinaryDatado objetoBLOB. Esta tarefa atribui o conteúdo do objetoFormsResultà matriz de bytes. - Invoque o método
writedo objetojavax.servlet.http.HttpServletResponsepara enviar o fluxo de dados de formulário para o navegador da Web cliente. Passar a matriz de bytes para o métodowrite.
- Crie um objeto
Consulte também