Você pode montar um documento PDF que contenha marcadores. Por exemplo, suponha que você tem um documento PDF que não contém marcadores e deseja modificá-lo fornecendo marcadores. Usando o serviço Assembler, você pode transmitir a ele um documento PDF que não contém marcadores e obter um documento PDF que contém marcadores.
Os marcadores contêm as seguintes propriedades:
Para a finalidade desta discussão, suponha que o seguinte documento DDX seja usado.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<PDF result="FinalDoc.pdf">
<PDF source="Loan.pdf">
<Bookmarks source="doc2" />
</PDF>
</PDF>
</DDX>
Nesse documento DDX, observe que o atributo de origem recebe o valor Loan.pdf
. Este documento DDX especifica que um único documento PDF é passado para o serviço Assembler. Ao montar um documento PDF com marcadores, você deve especificar um documento XML de marcador que descreva os marcadores no documento de resultado. Para especificar um documento XML de marcador, verifique se o elemento Bookmarks
está especificado no documento DDX.
Neste exemplo de documento DDX, o elemento Bookmarks
especifica doc2
como o valor. Esse valor indica que o mapa de entrada passado para o serviço Assembler contém uma chave chamada doc2
. O valor da chave doc2
é um valor com.adobe.idp.Document
que representa o documento XML do marcador. (Consulte "Linguagem de marcadores" no Assembler Service e DDX Reference.)
Este tópico usa a seguinte linguagem de marcadores XML para montar um documento PDF contendo marcadores.
<?xml version="1.0" encoding="UTF-8"?>
<Bookmarks xmlns="https://ns.adobe.com/pdf/bookmarks" version="1.0">
<Bookmark>
<Action>
<Launch NewWindow="true">
<File Name="C:\Adobe\LoanDetails.pdf" />
</Launch>
</Action>
<Title>Open the Loan document</Title>
</Bookmark>
<Bookmark>
<Action>
<Launch>
<Win Name="C:\WINDOWS\notepad.exe" />
</Launch>
</Action>
<Title>Launch NotePad</Title>
</Bookmark>
</Bookmarks>
Nesse documento XML de marcador, observe o elemento Ação que define a ação executada quando um usuário clica no marcador. No elemento Ação está o elemento do Launch que inicia aplicativos, como o NotePad e abre arquivos, como arquivos PDF. Para abrir um arquivo PDF, você deve usar o elemento File que especifica o arquivo a ser aberto. Por exemplo, no arquivo XML do marcador especificado nesta seção, o nome do arquivo aberto é LoanDetails.pdf.
Para obter detalhes completos sobre as ações compatíveis, consulte " Action
element" no Assembler Service e DDX Reference.
Dado o documento DDX especificado nesta seção e o arquivo XML de marcador como entrada, o serviço Assembler monta um documento PDF que contém os seguintes marcadores.
Quando um usuário clica no marcador Abrir os Detalhes do Empréstimo, o LoanDetails.pdf é aberto. Da mesma forma, quando o usuário clica no marcador Iniciar o NotePad, o NotePad é iniciado.
Antes de ler esta seção, é recomendável que você esteja familiarizado com a montagem de documentos PDF usando o serviço Assembler. Esta seção não discute conceitos, como criar um objeto de coleção que contenha documentos de entrada ou aprender a extrair os resultados do objeto de coleção retornado. (Consulte Montagem programática de documentos PDF.)
Para obter mais informações sobre o serviço Assembler, consulte Referência de Serviços para AEM Forms.
Para obter mais informações sobre um documento DDX, consulte Assembler Service e DDX Reference.
Para montar um documento PDF que contenha marcadores, 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.
Os seguintes arquivos JAR devem ser adicionados ao caminho de classe do seu projeto:
se o AEM Forms for implantado em um servidor de aplicativos J2EE compatível diferente do JBoss, você deverá substituir os arquivos adobe-utilities.jar e jbossall-client.jar por arquivos JAR específicos do servidor de aplicativos J2EE no qual o AEM Forms é implantado. Para obter informações sobre a localização de todos os arquivos AEM Forms JAR, consulte Incluindo arquivos da biblioteca AEM Forms Java.
Criar um cliente do Assembler do PDF
Antes de poder executar programaticamente uma operação Assembler, é necessário criar um cliente de serviço Assembler.
Referência a um documento DDX existente
Um documento DDX deve ser referenciado para montar um documento PDF. Este documento DDX deve conter o elemento Bookmarks
, que instrui o serviço Assembler a montar um PDF que contenha marcadores. (Consulte o documento DDX mostrado anteriormente nesta seção para obter um exemplo.)
Referência a um documento PDF ao qual os marcadores são adicionados
Referencie um documento PDF ao qual os marcadores são adicionados. Não importa se o documento PDF referenciado já contém marcadores. Se o elemento Bookmarks
for filho do elemento de origem do PDF, os Marcadores substituirão aqueles que já existem na origem do PDF. No entanto, se quiser manter os marcadores existentes, verifique se Bookmarks
é um irmão do elemento de origem PDF. Por exemplo, considere o seguinte exemplo:
<PDF result="foo">
<PDF source="inDoc"/>
<Bookmarks source="doc2"/>
</PDF>
Referência ao documento XML do marcador
Para montar um PDF que contenha novos marcadores, você deve fazer referência a um documento XML de marcador. O documento XML do marcador é passado para o serviço Assembler no objeto de coleção Map. (Consulte o documento XML do marcador mostrado anteriormente nesta seção para obter um exemplo.)
Consulte "Idioma dos Marcadores" no Assembler Service e DDX Reference.
Adicionar o documento PDF e o documento XML de marcador a uma coleção de Mapa
Você deve adicionar o documento PDF ao qual os marcadores são adicionados e o documento XML do marcador à coleção de Mapa. Portanto, o objeto de coleção Map contém dois elementos: um documento PDF e o documento XML do marcador.
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 obter informações sobre as opções de tempo de execução que podem ser definidas, consulte a referência da classe AssemblerOptionSpec
em AEM Forms API Reference.
Monte o documento PDF
Para montar um documento PDF que contém novos marcadores, use a operação invokeDDX
do serviço Assembler. O motivo pelo qual você deve usar a operação invokeDDX
em vez de outras operações do serviço Assembler, como invokeOneDocument
, é porque o serviço Assembler requer um documento XML de marcador passado no objeto de coleção de Mapa. Este objeto é um parâmetro da operação invokeDDX
.
Salve o documento PDF que contém marcadores
Você deve extrair os resultados do objeto de mapa retornado e salvar o documento PDF correspondente. (Consulte "Extrair os resultados" em Montagem programática de documentos PDF.)
Consulte também:
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Montagem programática de documentos PDF
Monte um documento PDF com marcadores 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 do PDF.
ServiceClientFactory
que contenha propriedades de conexão. (Consulte Definindo propriedades de conexão.)AssemblerServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Faça referência a um documento DDX existente.
java.io.FileInputStream
que represente o documento DDX usando seu construtor e transmitindo um valor de string que especifique o local do arquivo DX.com.adobe.idp.Document
usando seu construtor e transmitindo o objeto java.io.FileInputStream
.Referencie um documento PDF ao qual os marcadores são adicionados.
java.io.FileInputStream
usando seu construtor e passando o local do documento PDF.com.adobe.idp.Document
usando seu construtor e passe o objeto java.io.FileInputStream
que contém o documento PDF.Faça referência ao documento XML do marcador.
java.io.FileInputStream
usando seu construtor e transmitindo o local do arquivo XML que representa o documento XML do marcador.com.adobe.idp.Document
e passe o objeto java.io.FileInputStream
que contém o documento PDF.Adicione o documento PDF e o documento XML de marcador a uma coleção de Mapa.
Crie um objeto java.util.Map
usado para armazenar o documento PDF de entrada e o documento XML de marcador.
Adicione o documento PDF de entrada chamando o método put
do objeto e passando os seguintes argumentos:java.util.Map
com.adobe.idp.Document
que contém o documento PDF de entrada.Adicione o documento XML do marcador chamando o método java.util.Map
do objeto put
e passando os seguintes argumentos:
com.adobe.idp.Document
que contém o documento XML do marcador.Defina as opções de tempo de execução.
AssemblerOptionSpec
que armazene opções de tempo de execução usando seu construtor .AssemblerOptionSpec
. Por exemplo, para instruir o serviço Assembler a continuar o processamento de uma tarefa quando ocorrer um erro, chame o método AssemblerOptionSpec
do objeto setFailOnError
e passe false
.Monte o documento PDF.
Chame o método AssemblerServiceClient
do objeto invokeDDX
e passe os seguintes valores obrigatórios:
com.adobe.idp.Document
que representa o documento DDX a ser usadojava.util.Map
que contém o documento PDF de entrada e o documento XML de marcador.com.adobe.livecycle.assembler.client.AssemblerOptionSpec
que especifica as opções de tempo de execução, incluindo a fonte padrão e o nível de log do trabalhoO método invokeDDX
retorna um objeto com.adobe.livecycle.assembler.client.AssemblerResult
que contém os resultados da tarefa e quaisquer exceções que ocorreram.
Salve o documento PDF que contém marcadores.
Para obter o documento PDF recém-criado, execute as seguintes ações:
AssemblerResult
do objeto getDocuments
. Isso retorna um objeto java.util.Map
.java.util.Map
até encontrar o objeto com.adobe.idp.Document
resultante. (Você pode usar o elemento de resultado PDF especificado no documento DX para obter o documento.)com.adobe.idp.Document
do objeto copyToFile
para extrair o documento PDF.Consulte também:
Início rápido (modo SOAP): Montagem de documentos PDF com marcadores usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Monte um documento PDF com marcadores usando a API do serviço Assembler (serviço da Web):
Inclua arquivos de projeto.
Crie um projeto do Microsoft .NET que use MTOM. Certifique-se de usar a seguinte definição de WSDL: http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Crie um cliente Assembler do PDF.
Crie um objeto AssemblerServiceClient
usando seu construtor padrão.
Crie um objeto AssemblerServiceClient.Endpoint.Address
usando o construtor System.ServiceModel.EndpointAddress
. 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
). Você não precisa usar o atributo lc_version
. Esse atributo é usado ao criar uma referência de serviço.
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo AssemblerServiceClient.Endpoint.Binding
. Converta o valor de retorno em BasicHttpBinding
.
Defina o campo System.ServiceModel.BasicHttpBinding
MessageEncoding
do objeto para WSMessageEncoding.Mtom
. Esse valor garante que o MTOM seja usado.
Ative a autenticação HTTP básica executando as seguintes tarefas:
AssemblerServiceClient.ClientCredentials.UserName.UserName
.AssemblerServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Faça referência a um documento DDX existente.
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar o documento DDX.System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento DX e o modo no qual o arquivo será aberto.System.IO.FileStream
. Você pode determinar o tamanho da matriz de bytes obtendo a propriedade System.IO.FileStream
do objeto Length
.System.IO.FileStream
do objeto Read
e passando a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido.BLOB
atribuindo seu campo MTOM
ao conteúdo da matriz de bytes.Referencie um documento PDF ao qual os marcadores são adicionados.
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar o PDF de entrada.System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF de entrada e o modo no qual o arquivo será aberto.System.IO.FileStream
. Você pode determinar o tamanho da matriz de bytes obtendo a propriedade System.IO.FileStream
do objeto Length
.System.IO.FileStream
do objeto Read
e passando a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido.BLOB
atribuindo seu campo MTOM
ao conteúdo da matriz de bytes.Faça referência ao documento XML do marcador.
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar o documento XML do marcador.System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF de entrada e o modo no qual o arquivo será aberto.System.IO.FileStream
. Você pode determinar o tamanho da matriz de bytes obtendo a propriedade System.IO.FileStream
do objeto Length
.System.IO.FileStream
do objeto Read
e passando a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido.BLOB
atribuindo seu campo MTOM
ao conteúdo da matriz de bytes.Adicione o documento PDF e o documento XML de marcador a uma coleção de Mapa.
MyMapOf_xsd_string_To_xsd_anyType
. Esse objeto de coleção é usado para armazenar os documentos PDF de entrada e o documento XML de marcador.MyMapOf_xsd_string_To_xsd_anyType_Item
.MyMapOf_xsd_string_To_xsd_anyType_Item
key
do objeto. Esse valor deve corresponder ao valor do elemento de origem do PDF especificado no documento DX.BLOB
que armazena o documento PDF ao campo MyMapOf_xsd_string_To_xsd_anyType_Item
value
do objeto.MyMapOf_xsd_string_To_xsd_anyType_Item
ao objeto MyMapOf_xsd_string_To_xsd_anyType
. Chame o método MyMapOf_xsd_string_To_xsd_anyType
do objeto Add
e passe o objeto MyMapOf_xsd_string_To_xsd_anyType
. (Execute esta tarefa para cada documento PDF de entrada e o documento XML de marcador.)Defina as opções de tempo de execução.
AssemblerOptionSpec
que armazene opções de tempo de execução usando seu construtor .AssemblerOptionSpec
. Por exemplo, para instruir o serviço Assembler a continuar o processamento de uma tarefa quando ocorrer um erro, atribua false
ao membro de dados AssemblerOptionSpec
do objeto failOnError
.Monte o documento PDF.
Chame o método AssemblerServiceClient
do objeto invokeDDX
e passe os seguintes valores:
BLOB
que representa o documento DDXMyMapOf_xsd_string_To_xsd_anyType
que contém os documentos de entradaAssemblerOptionSpec
que especifica as opções de tempo de execuçãoO método invokeDDX
retorna um objeto AssemblerResult
que contém os resultados da tarefa e quaisquer exceções que possam ter ocorrido.
Salve o documento PDF que contém marcadores.
Para obter o documento PDF recém-criado, execute as seguintes ações:
AssemblerResult
do objeto documents
, que é um objeto Map
que contém os documentos PDF de resultado.Map
até encontrar a chave que corresponde ao nome do documento resultante. Em seguida, converta esse membro da matriz value
em um BLOB
.BLOB
MTOM
do objeto. Isso retorna uma matriz de bytes que podem ser gravados em um arquivo PDF.Consulte também:
Chamar o AEM Forms usando MTOM