Você pode otimizar o delivery do conteúdo PDF e melhorar a capacidade do serviço Forms de lidar com a carga da rede usando a capacidade de renderização do cliente da Acrobat ou Adobe Reader. Esse processo é conhecido como renderização de um formulário no cliente. Para renderizar um formulário no cliente, o dispositivo cliente (geralmente um navegador da Web) deve usar o Acrobat 7.0 ou o Adobe Reader 7.0 ou posterior.
As alterações em um formulário resultantes da execução de script do lado do servidor não são refletidas em um formulário renderizado no cliente, a menos que o subformulário raiz contenha o atributo restoreState
definido como auto
. Para obter mais informações sobre este atributo, consulte Forms Designer.
Para obter mais informações sobre o serviço Forms, consulte Referência de serviços para AEM Forms.
Para renderizar um formulário no cliente, 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 cliente de serviço da 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
.
Definir opções de tempo de execução de renderização de cliente
É necessário definir a opção de tempo de execução de renderização do cliente para renderizar um formulário no cliente, definindo a opção RenderAtClient
de tempo de execução como true
. Isso resulta na entrega do formulário no dispositivo cliente em que ele é renderizado. Se RenderAtClient
for auto
(o valor padrão), o design de formulário determinará se o formulário será renderizado no cliente. O design de formulário deve ser um design de formulário com um layout flutuante.
Uma opção opcional de tempo de execução que pode ser definida é a opção SeedPDF
. A opção SeedPDF
combina o container PDF (documento PDF semente) com o design de formulário e os dados XML. O design de formulário e os dados XML são entregues à Acrobat ou à Adobe Reader, onde o formulário é renderizado. A opção SeedPDF
pode ser usada quando o computador cliente não tem fontes usadas no formulário, como quando um usuário final não está licenciado para usar uma fonte que o proprietário do formulário está licenciado para usar.
Você pode usar o Designer para criar um arquivo PDF dinâmico simples para uso como um arquivo PDF semente. As seguintes etapas são necessárias para executar essa tarefa:
Não é necessário definir a opção de tempo de execução de PDF semente para renderizar um formulário no cliente. Se você não especificar um PDF semente, o serviço Forms criará um PDF de shell que não conterá objetos COS, mas conterá um invólucro PDF com o conteúdo XDP real incorporado no interior. As etapas nesta seção não definem a opção semente de tempo de execução de PDF. Para obter informações sobre objetos COS, consulte o Guia de referência da Adobe PDF.
Renderizar um formulário no cliente
Para renderizar um formulário no cliente, é necessário garantir que as opções de tempo de execução de renderização do cliente sejam incluídas na lógica do aplicativo para renderizar um formulário.
Gravar o fluxo de dados do formulário no navegador da Web do cliente
O serviço Forms cria um fluxo de dados de formulário que deve ser gravado no navegador da Web do cliente. Quando gravado no navegador da Web do cliente, o formulário é renderizado pelo Acrobat 7.0 ou Adobe Reader 7.0 ou posterior e é visível para o usuário.
Consulte também:
Renderizar um formulário no cliente usando a API Java
Renderizar um formulário no cliente usando a API de serviço da Web
Incluindo arquivos da biblioteca Java AEM Forms
Configuração das propriedades de conexão
Start rápidos da API de serviço da Forms
Transmissão de Documentos ao serviço Forms
Criação de Aplicações web que renderizam o Forms
Renderize um formulário no cliente usando a API da 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
.Definir opções de tempo de execução de renderização de cliente
PDFFormRenderSpec
usando seu construtor.RenderAtClient
invocando o método PDFFormRenderSpec
do objeto setRenderAtClient
e transmitindo o valor enum RenderAtClient.Yes
.Renderizar um formulário no cliente
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 necessárias para renderizar um formulário no cliente.URLSpec
que contém valores de URI exigidos pelo serviço Forms para renderizar um formulário.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
.Consulte também:
Start rápido (modo SOAP): Como renderizar um formulário no cliente usando a API Java
Incluindo arquivos da biblioteca Java AEM Forms
Configuração das propriedades de conexão
Renderize um formulário no cliente 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.
Definir opções de tempo de execução de renderização de cliente
PDFFormRenderSpec
usando seu construtor.RenderAtClient
chamando o método PDFFormRenderSpec
do objeto setRenderAtClient
e transmitindo o valor da string RenderAtClient.Yes
.Renderizar um formulário no cliente
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
. (Consulte Pré-preencher o Forms com layouts flutuantes.)PDFFormRenderSpec
que armazena opções de tempo de execução necessárias para renderizar um formulário no cliente.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. Esse parâmetro é 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 da 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
.Consulte também:
Renderização do Forms no cliente
Invocar o AEM Forms usando a codificação Base64