Os exemplos e amostras neste documento são somente para AEM Forms no ambiente JEE.
Normalmente, um design de formulário criado no Designer é transmitido por referência ao serviço Forms. Os designs de formulário podem ser grandes e, como resultado, é mais eficiente passá-los por referência para evitar a necessidade de empacotar bytes de design de formulário por valor. O serviço Forms também pode armazenar o design do formulário em cache para que, quando armazenado em cache, ele não precise ler o design do formulário continuamente.
Se um design de formulário contiver um atributo UUID, ele será armazenado em cache. O valor UUID é exclusivo para todos os designs de formulário e é usado para identificar exclusivamente um formulário. Ao renderizar um formulário por valor, o formulário só deve ser armazenado em cache quando usado repetidamente. No entanto, se o formulário não for usado repetidamente e precisar ser exclusivo, é possível evitar o armazenamento em cache usando as opções de armazenamento em cache definidas com a API do AEM Forms.
O serviço Forms também pode resolver o local do conteúdo vinculado no design do formulário. Por exemplo, imagens vinculadas referenciadas no design do formulário são URLs relativas. O conteúdo vinculado é sempre considerado como relativo ao local de design do formulário. Portanto, resolver o conteúdo vinculado é uma questão de determinar sua localização aplicando o caminho relativo ao local absoluto do design do formulário.
Em vez de passar um design de formulário por referência, você pode passar um design de formulário por valor. Transmitir um design de formulário por valor é eficiente quando um design de formulário é criado dinamicamente; ou seja, quando um aplicativo cliente gera o XML que cria um design de formulário durante o tempo de execução. Nessa situação, um design de formulário não é armazenado em um repositório físico porque ele é armazenado na memória. Ao criar dinamicamente um design de formulário em tempo de execução e passá-lo por valor, você pode armazenar o formulário em cache e melhorar o desempenho do serviço do Forms.
Limitações da transmissão de um formulário por valor
As seguintes limitações se aplicam quando um design de formulário é passado pelo valor:
Embora seja possível renderizar diferentes tipos de formulários por valor (por exemplo, formulários HTML ou formulários que contêm direitos de uso), esta seção discute a renderização de PDF forms interativos.
Para obter mais informações sobre o serviço Forms, consulte Referência de serviços para o AEM Forms.
Para renderizar um formulário por valor, execute as seguintes etapas:
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 importar dados programaticamente para uma API do cliente do formulário PDF, você deve criar um cliente do serviço de Integração de dados. Ao criar um cliente de serviço, você define as configurações de conexão necessárias para chamar um serviço.
Referência ao design do formulário
Ao renderizar um formulário por valor, é necessário criar um com.adobe.idp.Document
objeto que contém o design de formulário a ser renderizado. Você pode fazer referência a um arquivo XDP existente ou criar dinamicamente um design de formulário em tempo de execução e preencher um com.adobe.idp.Document
dados.
Esta seção e o início rápido correspondente fazem referência a um arquivo XDP existente.
Renderizar um formulário por valor
Para renderizar um formulário por valor, passe um com.adobe.idp.Document
instância que contém o design do formulário para o método de renderização inDataDoc
(pode ser qualquer um dos FormsServiceClient
métodos de renderização do objeto, como renderPDFForm
, (Deprecated) renderHTMLForm
e assim por diante). Normalmente, esse valor de parâmetro é reservado para dados mesclados com o formulário. Da mesma forma, passe um valor de string vazio para o formQuery
parâmetro. Normalmente, esse parâmetro requer um valor de sequência de caracteres que especifica o nome do design do formulário.
Para exibir dados no formulário, os dados devem ser especificados na variável xfa:datasets
elemento. Para obter informações sobre a arquitetura XFA, acesse https://www.pdfa.org/norm-refs/XFA-3_3.pdf.
Gravar o fluxo de dados do formulário no navegador Web cliente
Quando o serviço Forms renderiza um formulário por valor, 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 um formulário por valor usando a API Java
Renderizar um formulário por valor 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
Passar documentos para o serviço da Forms
Criação de aplicações Web que renderizam o Forms
Renderize um formulário por valor 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
ServiceClientFactory
objeto que contém propriedades de conexão.FormsServiceClient
usando seu construtor e transmitindo o ServiceClientFactory
objeto.Referência ao design do formulário
java.io.FileInputStream
objeto que representa o design do formulário a ser renderizado usando seu construtor e transmitindo um valor de string que especifica o local do arquivo XDP.com.adobe.idp.Document
usando seu construtor e transmitindo o java.io.FileInputStream
objeto.Renderizar um formulário por valor
Chame o FormsServiceClient
do objeto renderPDFForm
e passe os seguintes valores:
com.adobe.idp.Document
objeto que contém o design do formulário. Normalmente, esse valor de parâmetro é reservado para dados que são mesclados com o formulário.PDFFormRenderSpec
objeto 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
objeto que contém valores de URI exigidos pelo serviço do Forms.java.util.HashMap
objeto que armazena anexos de arquivo. Este é um parâmetro opcional e você pode especificar null
se não quiser anexar arquivos ao formulário.A variável renderPDFForm
o método retorna um FormsResult
objeto que contém um fluxo de dados de formulário que pode ser gravado no navegador da web do cliente.
Gravar o fluxo de dados do formulário no navegador Web cliente
com.adobe.idp.Document
ao invocar o FormsResult
object's getOutputContent
método.com.adobe.idp.Document
ao invocar seu getContentType
método.javax.servlet.http.HttpServletResponse
tipo de conteúdo do objeto chamando seu setContentType
e transmitindo o tipo de conteúdo do com.adobe.idp.Document
objeto.javax.servlet.ServletOutputStream
objeto usado para gravar o fluxo de dados de formulário no navegador da web cliente, chamando o javax.servlet.http.HttpServletResponse
do objeto getOutputStream
método.java.io.InputStream
ao invocar o com.adobe.idp.Document
do objeto getInputStream
método.InputStream
objeto. Chame o InputStream
do objeto available
para obter o tamanho do InputStream
objeto.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 de formulário para o navegador web cliente. Passe a matriz de bytes para o write
método.Consulte também
Renderização do Forms por valor
Início rápido (modo SOAP): renderização por valor usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Definindo propriedades de conexão
Renderize um formulário por valor usando a API do Forms (serviço Web):
Incluir arquivos de projeto
Criar um objeto da API do cliente do Forms
Criar um FormsService
objeto e definir valores de autenticação.
Referência ao design do formulário
java.io.FileInputStream
usando seu construtor. Transmita um valor de string que especifique o local do arquivo XDP.BLOB
usando seu construtor. A variável BLOB
objeto é usado para armazenar um documento PDF que é criptografado com uma senha.java.io.FileInputStream
objeto. Você pode determinar o tamanho da matriz de bytes obtendo o java.io.FileInputStream
o tamanho do objeto usando seu available
método.java.io.FileInputStream
do objeto read
e transmitindo a matriz de bytes.BLOB
ao invocar seu setBinaryData
e transmitindo a matriz de bytes.Renderizar um formulário por valor
Chame o FormsService
do objeto renderPDFForm
e passe os seguintes valores:
BLOB
objeto que contém o design do formulário. Normalmente, esse valor de parâmetro é reservado para dados que são mesclados com o formulário.PDFFormRenderSpec
objeto 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
objeto que contém valores de URI exigidos pelo serviço do Forms.java.util.HashMap
objeto 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
objeto preenchido pelo método. Isso é usado para armazenar o formulário de PDF renderizado.javax.xml.rpc.holders.LongHolder
objeto preenchido pelo método. (Esse argumento armazena o número de páginas no formulário.)javax.xml.rpc.holders.StringHolder
objeto preenchido pelo método. (Esse argumento armazena o valor do local.)com.adobe.idp.services.holders.FormsResultHolder
objeto que conterá os resultados desta operação.A variável renderPDFForm
O método preenche o com.adobe.idp.services.holders.FormsResultHolder
objeto que é passado como o último valor de 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 Web cliente
FormResult
obtendo o valor do com.adobe.idp.services.holders.FormsResultHolder
do objeto value
membro de dados.BLOB
objeto que contém dados de formulário chamando o FormsResult
do objeto getOutputContent
método.BLOB
ao invocar seu getContentType
método.javax.servlet.http.HttpServletResponse
tipo de conteúdo do objeto chamando seu setContentType
e transmitindo o tipo de conteúdo do BLOB
objeto.javax.servlet.ServletOutputStream
objeto usado para gravar o fluxo de dados de formulário no navegador da web cliente, chamando o javax.servlet.http.HttpServletResponse
do objeto getOutputStream
método.BLOB
do objeto getBinaryData
método. Esta tarefa atribui o conteúdo do FormsResult
à matriz de bytes.javax.servlet.http.HttpServletResponse
do objeto write
para enviar o fluxo de dados de formulário para o navegador web cliente. Passe a matriz de bytes para o write
método.Consulte também
Renderização do Forms por valor
Chamada de AEM Forms usando codificação Base64