O serviço Forms renderiza PDF forms interativos para dispositivos clientes, geralmente navegadores da Web, para coletar informações dos usuários. Depois que um formulário interativo é renderizado, o usuário pode inserir dados nos campos do formulário e clicar em um botão Enviar localizado no formulário para enviar informações de volta ao serviço da Forms. O Adobe Reader ou o Acrobat devem ser instalados no computador que hospeda o navegador da Web do cliente para que um formulário PDF interativo esteja visível.
Antes de renderizar um formulário usando o serviço Forms, crie um design de formulário. Normalmente, um design de formulário é criado no Designer e é salvo como um arquivo XDP. Para obter informações sobre como criar um design de formulário, consulte Forms Designer.
Amostra de pedido de empréstimo
Um exemplo de aplicativo de empréstimo é apresentado para demonstrar como o serviço Forms usa formulários interativos para coletar informações dos usuários. Esta aplicação permite que um utilizador preencha um formulário com os dados necessários para garantir um empréstimo e submeta os dados ao serviço Forms. O diagrama a seguir mostra o fluxo lógico do aplicativo de empréstimo.
A tabela a seguir descreve as etapas neste diagrama.
Etapa |
Descrição |
---|---|
1 |
O Java Servlet |
2 |
O |
3 |
Depois que o usuário preenche o formulário de empréstimo e clica no botão Enviar, os dados são submetidos ao |
4 |
O |
5 |
Um formulário de confirmação é renderizado de volta ao navegador da Web. Dados como o nome e sobrenome do usuário são unidos ao formulário antes de serem renderizados. (Consulte Pré-preencher o Forms com layouts flutuantes.) |
Formulário de empréstimo
Este formulário de empréstimo interativo é renderizado pelo Java Servlet do aplicativo de empréstimo de amostra GetLoanForm
.
Formulário de confirmação
Este formulário é renderizado pelo Java Servlet do aplicativo de empréstimo de amostra HandleData
.
O Java Servlet HandleData
pré-preenche este formulário com o nome e sobrenome do usuário, bem como a quantidade. Depois que o formulário é pré-preenchido, ele é enviado para o navegador da Web do cliente. (Consulte Pré-preencher o Forms com layouts flutuantes)
Servlets Java
O aplicativo de empréstimo de exemplo é um exemplo de um aplicativo de serviço da Forms que existe como um Servlet Java. Um Servlet Java é um programa Java em execução em um servidor de aplicativos J2EE, como o WebSphere, e contém o código da API do cliente do serviço Forms.
O código a seguir mostra a sintaxe de um servlet Java chamado GetLoanForm:
public class GetLoanForm extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
public void doPost(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
Normalmente, você não coloca o código da API do cliente de serviço da Forms em um método doGet
ou doPost
do Java Servlet. É uma prática de programação melhor colocar esse código em uma classe separada, instanciar a classe do método doPost
(ou doGet
método) e chamar os métodos apropriados. No entanto, para a brevidade do código, os exemplos de código nesta seção são mantidos para um mínimo e os exemplos de código são colocados no método doPost
.
Para obter mais informações sobre o serviço Forms, consulte Referência de serviços para AEM Forms.
Resumo das etapas
Para renderizar um formulário PDF interativo, execute as seguintes tarefas:
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.
Criar um objeto de API do Forms Client
Antes de executar programaticamente uma operação de API do cliente de serviço da Forms, você deve criar um objeto de API do cliente Forms. Se você estiver usando a API Java, crie um objeto FormsServiceClient
. Se você estiver usando a API de serviço da Web da Forms, crie um objeto FormsService
.
Especificar valores de URI
É possível especificar valores de URI exigidos pelo serviço Forms para renderizar um formulário. Um design de formulário salvo como parte de um aplicativo Forms pode ser referenciado usando o valor de URI raiz de conteúdo repository:///
. Por exemplo, considere o seguinte design de formulário chamado Loan.xdp localizado em um aplicativo Forms chamado FormsApplication:
Para acessar esse design de formulário, especifique Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
como o nome do formulário (o primeiro parâmetro passado para o método renderPDFForm
) e repository:///
como o valor do URI raiz do conteúdo.
Para obter informações sobre como criar um aplicativo Forms usando o Workbench, consulte Ajuda do Workbench.
O caminho para um recurso localizado em um aplicativo Forms é:
Applications/Application-name/Application-version/Folder.../Filename
Os valores a seguir mostram alguns exemplos de valores de URI:
Ao renderizar um formulário interativo, é possível definir valores de URI, como o URL do público alvo, para onde os dados do formulário são postados. O URL do público alvo pode ser definido de uma das seguintes maneiras:
Se o URL do público alvo for definido no design de formulário, não o substitua pela API do cliente de serviço da Forms. Ou seja, configurar o URL do público alvo usando a API do Forms redefine o URL especificado no design de formulário para aquele especificado usando a API. Se você desejar enviar o formulário PDF para o URL do público alvo especificado no design de formulário, configure o URL do público alvo de forma programática para uma string vazia.
Se você tiver um formulário que contenha um botão Enviar e um botão calcular (com um script correspondente que é executado no servidor), poderá definir programaticamente o URL para o qual o formulário será enviado para executar o script. Use o botão Enviar no design de formulário para especificar o URL para onde os dados do formulário são publicados. (Consulte Calculando Dados de Formulário.)
Em vez de especificar um valor de URL para fazer referência a um arquivo XDP, você também pode enviar uma instância com.adobe.idp.Document
para o serviço Forms. A instância com.adobe.idp.Document
contém um design de formulário. (Consulte Passando Documentos para o Forms Service.)
Anexar arquivos ao formulário
É possível anexar arquivos a um formulário. Ao renderizar um formulário PDF com anexos de arquivo, os usuários podem recuperar os anexos de arquivo no Acrobat usando o painel de anexo de arquivo. É possível anexar tipos de arquivos diferentes a um formulário, como um arquivo de texto, ou a um arquivo binário, como um arquivo JPG.
Anexar anexos de arquivo a um formulário é opcional.
Renderizar um formulário PDF interativo
Para renderizar um formulário, use um design de formulário criado no Designer e salvo como um arquivo XDP ou PDF. Além disso, é possível renderizar um formulário criado usando o Acrobat e salvo como um arquivo PDF. Para renderizar um formulário PDF interativo, chame o método FormsServiceClient
do objeto renderPDFForm
ou o método renderPDFForm2
.
O renderPDFForm
usa um objeto URLSpec
. A raiz do conteúdo para o arquivo XDP é passada para o serviço Forms usando o método URLSpec
do objeto setContentRootURI
. O nome do design de formulário ( formQuery
) é transmitido como um valor de parâmetro separado. Os dois valores são concatenados para obter a referência absoluta ao design de formulário.
O método renderPDFForm2
aceita uma instância com.adobe.idp.Document
que contém o documento XDP ou PDF a ser renderizado.
A opção de tempo de execução do PDF marcado não pode ser definida se o documento de entrada for um documento PDF. Se o arquivo de entrada for um arquivo XDP, a opção PDF marcado pode ser definida.
Renderize um formulário PDF interativo 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 seu projeto Java.
Criar um objeto de API do Forms Client
ServiceClientFactory
que contenha propriedades de conexão.FormsServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Especificar valores de URI
URLSpec
que armazene valores de URI usando seu construtor.URLSpec
do objeto setApplicationWebRoot
e transmita um valor de string que representa a raiz da Web do aplicativo.URLSpec
do objeto setContentRootURI
e transmita um valor de string que especifica o valor do URI raiz do conteúdo. Verifique se o design de formulário está localizado no URI raiz do conteúdo. Caso contrário, o serviço Forms lança uma exceção. Para fazer referência ao repositório, especifique repository:///
.URLSpec
do objeto setTargetURL
e passe um valor de string que especifica o valor do URL do público alvo para onde os dados do formulário são enviados. Se você definir o URL do público alvo no design de formulário, poderá passar uma string vazia. Também é possível especificar o URL para o qual um formulário é enviado para executar cálculos.Anexar arquivos ao formulário
Crie um objeto java.util.HashMap
para armazenar anexos de arquivo usando seu construtor.
Chame o método java.util.HashMap
do objeto put
para cada arquivo a ser anexado ao formulário renderizado. Passe os seguintes valores para este método:
Um objeto com.adobe.idp.Document
que contém o anexo de arquivo.
Repita essa etapa para que cada arquivo seja anexado ao formulário. Esta etapa é opcional e você pode enviar null
se não quiser enviar anexos de arquivo.
Renderizar um formulário PDF interativo
Chame o método FormsServiceClient
do objeto renderPDFForm
e passe os seguintes valores:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.com.adobe.idp.Document
que contém dados a serem unidos ao formulário. Se você não quiser unir dados, passe um objeto com.adobe.idp.Document
vazio.PDFFormRenderSpec
que armazena opções de tempo de execução. Este é um parâmetro opcional e você pode especificar null
se não quiser especificar opções de tempo de execução.URLSpec
que contém valores de URI exigidos pelo serviço Forms.java.util.HashMap
que armazena anexos de arquivo. Este é um parâmetro opcional e você pode especificar null
se não quiser anexar arquivos ao formulário.O método renderPDFForm
retorna um objeto FormsResult
que contém um fluxo de dados de formulário que deve ser gravado no navegador da Web do cliente.
Gravar o fluxo de dados do formulário no navegador da Web do cliente
com.adobe.idp.Document
chamando o método FormsResult
object 's getOutputContent
.com.adobe.idp.Document
chamando seu método getContentType
.javax.servlet.http.HttpServletResponse
chamando seu método setContentType
e transmitindo o tipo de conteúdo do objeto com.adobe.idp.Document
.javax.servlet.ServletOutputStream
usado para gravar o fluxo de dados do formulário no navegador da Web do cliente, chamando o método javax.servlet.http.HttpServletResponse
do objeto getOutputStream
.java.io.InputStream
invocando o método com.adobe.idp.Document
do objeto getInputStream
.InputStream
do objeto read
e transmitindo a matriz de bytes como um argumento.javax.servlet.ServletOutputStream
do objeto write
para enviar o fluxo de dados do formulário para o navegador da Web do cliente. Passe a matriz de bytes para o método write
.Renderize um formulário PDF interativo usando a Forms API (serviço da Web):
Incluir arquivos de projeto
Criar um objeto de API do Forms Client
Crie um objeto FormsService
e defina os valores de autenticação.
Especificar valores de URI
URLSpec
que armazene valores de URI usando seu construtor.URLSpec
do objeto setApplicationWebRoot
e transmita um valor de string que representa a raiz da Web do aplicativo.URLSpec
do objeto setContentRootURI
e transmita um valor de string que especifica o valor do URI raiz do conteúdo. Verifique se o design de formulário está localizado no URI raiz do conteúdo. Caso contrário, o serviço Forms lança uma exceção. Para fazer referência ao repositório, especifique repository:///
.URLSpec
do objeto setTargetURL
e passe um valor de string que especifica o valor do URL do público alvo para onde os dados do formulário são enviados. Se você definir o URL do público alvo no design de formulário, poderá passar uma string vazia. Também é possível especificar o URL para o qual um formulário é enviado para executar cálculos.Anexar arquivos ao formulário
Crie um objeto java.util.HashMap
para armazenar anexos de arquivo usando seu construtor.
Chame o método java.util.HashMap
do objeto put
para cada arquivo a ser anexado ao formulário renderizado. Passe os seguintes valores para este método:
Um objeto BLOB
que contém o anexo de arquivo
Repita essa etapa para que cada arquivo seja anexado ao formulário.
Renderizar um formulário PDF interativo
Chame o método FormsService
do objeto renderPDFForm
e passe os seguintes valores:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
que contém dados a serem unidos ao formulário. Se você não quiser unir dados, passe null
.PDFFormRenderSpec
que armazena opções de tempo de execução. Este é um parâmetro opcional e você pode especificar null
se não quiser especificar opções de tempo de execução.URLSpec
que contém valores de URI exigidos pelo serviço Forms.java.util.HashMap
que armazena anexos de arquivo. Este é um parâmetro opcional e você pode especificar null
se não quiser anexar arquivos ao formulário.com.adobe.idp.services.holders.BLOBHolder
que é preenchido pelo método. Isso é usado para armazenar o formulário PDF renderizado.javax.xml.rpc.holders.LongHolder
que é preenchido pelo método. (Esse argumento armazenará o número de páginas no formulário.)javax.xml.rpc.holders.StringHolder
que é preenchido pelo método. (Esse argumento armazenará o valor de localidade.)com.adobe.idp.services.holders.FormsResultHolder
que conterá os resultados desta operação.O método renderPDFForm
preenche o objeto com.adobe.idp.services.holders.FormsResultHolder
transmitido como o último valor do argumento com um fluxo de dados de formulário que deve ser gravado no navegador da Web do cliente.
Gravar o fluxo de dados do formulário no navegador da Web do cliente
FormResult
obtendo o valor do membro de dados com.adobe.idp.services.holders.FormsResultHolder
do objeto value
.BLOB
que contenha dados de formulário chamando o método FormsResult
do objeto getOutputContent
.BLOB
chamando seu método getContentType
.javax.servlet.http.HttpServletResponse
chamando seu método setContentType
e transmitindo o tipo de conteúdo do objeto BLOB
.javax.servlet.ServletOutputStream
usado para gravar o fluxo de dados do formulário no navegador da Web do cliente, chamando o método javax.servlet.http.HttpServletResponse
do objeto getOutputStream
.BLOB
do objeto getBinaryData
. Essa tarefa atribui o conteúdo do objeto FormsResult
à matriz de bytes.javax.servlet.http.HttpServletResponse
do objeto write
para enviar o fluxo de dados do formulário para o navegador da Web do cliente. Passe a matriz de bytes para o método write
.Gravar o fluxo de dados do formulário no navegador da Web do cliente
Quando o serviço Forms renderiza um formulário, ele retorna um fluxo de dados do 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.