Sobre o serviço Gerar PDF
O serviço Gerar PDF converte formatos de arquivo nativos em PDF. Também converte PDF em outros formatos de arquivo e otimiza o tamanho dos documentos PDF.
O serviço Gerar PDF usa aplicativos nativos para converter os seguintes formatos de arquivo em PDF. Salvo indicação em contrário, somente as versões em alemão, francês, inglês e japonês desses aplicativos são compatíveis. O Windows indica apenas suporte para Windows Server® 2003 e Windows Server 2008.
É necessário o Acrobat® 9.2 ou posterior para converter o formato Microsoft XPS em PDF.
O serviço Gerar PDF não suporta as versões de 64 bits do OpenOffice.
O Photoshop CS3 e o CS4 não são suportados porque não são compatíveis com o Windows Server 2003 ou o Windows Server 2008.
O serviço Gerar PDF converte os seguintes formatos de arquivo baseados em padrões em PDF.
O serviço Gerar PDF converte PDF nos seguintes formatos de arquivo (somente Windows):
O serviço Gerar PDF exige que você execute estas tarefas administrativas:
Essas tarefas são descritas em Instalação e Implantação de formulários AEM usando o recurso JavaScript Turnkey.
É possível realizar essas tarefas usando o serviço Gerar PDF:
Para obter mais informações sobre o serviço Gerar PDF, consulte Referência de serviços para AEM Forms.
Esta seção descreve como você pode usar a API Gerar PDF para converter programaticamente um documento do Microsoft Word em um documento PDF.
Para obter mais informações sobre formatos de arquivo adicionais, consulte Adicionar suporte para formatos de arquivo nativos adicionais.
Para obter mais informações sobre o serviço Gerar PDF, consulte Referência de serviços para AEM Forms.
Para converter um documento do Microsoft Word em um documento PDF, 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 cliente Gerar PDF
Antes de executar programaticamente uma operação Gerar PDF, crie um cliente de serviço Gerar PDF. Se você estiver usando a API Java, crie um objeto GeneratePdfServiceClient
. Se você estiver usando a API de serviço da Web, crie um objeto GeneratePDFServiceService
.
Recuperar o arquivo para converter em um documento PDF
Recupere o documento do Microsoft Word para converter em um documento PDF.
Converter o arquivo em um documento PDF
Depois de criar o cliente de serviço Gerar PDF, você pode chamar o método createPDF2
. Esse método precisa de informações sobre o documento a ser convertido, incluindo a extensão do arquivo.
Recuperar os resultados
Depois que o arquivo for convertido em um documento PDF, você poderá recuperar os resultados. Por exemplo, depois de converter um arquivo do Word em um documento PDF, é possível recuperar e salvar o documento PDF.
Consulte também:
Converter documentos do Word em documentos PDF usando a API Java
Converter documentos do Word em documentos PDF usando a API de serviço da Web
Incluindo arquivos da biblioteca Java AEM Forms
Configuração das propriedades de conexão
Gerar Start rápidos da API do serviço PDF
Converta um documento do Microsoft Word em um documento PDF usando a API Gerar PDF (Java):
Incluir arquivos de projeto.
Inclua arquivos JAR do cliente, como adobe-generatepdf-client.jar, no caminho da classe do seu projeto Java.
Crie um cliente Gerar PDF.
ServiceClientFactory
que contenha propriedades de conexão.GeneratePdfServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Recupere o arquivo para convertê-lo em um documento PDF.
java.io.FileInputStream
que represente o arquivo do Word a ser convertido usando seu construtor. Passe um valor de string que especifica o local do arquivo.com.adobe.idp.Document
usando seu construtor e transmitindo o objeto java.io.FileInputStream
.Converta o arquivo em um documento PDF.
Converta o arquivo em um documento PDF chamando o método GeneratePdfServiceClient
do objeto createPDF2
e transmitindo os seguintes valores:
com.adobe.idp.Document
que representa o arquivo a ser convertido.java.lang.String
que contém a extensão do arquivo.java.lang.String
que contém as configurações de tipo de arquivo a serem usadas na conversão. As configurações de tipo de arquivo fornecem configurações de conversão para diferentes tipos de arquivo, como .doc ou .xls.java.lang.String
que contém o nome das configurações do PDF a serem usadas. Por exemplo, você pode especificar Standard
.java.lang.String
que contém o nome das configurações de segurança a serem usadas.com.adobe.idp.Document
opcional que contém configurações a serem aplicadas ao gerar o documento PDF.com.adobe.idp.Document
que contém informações de metadados a serem aplicadas ao documento PDF.O método createPDF2
retorna um objeto CreatePDFResult
que contém o novo documento PDF e as informações de um registro. O arquivo de log geralmente contém mensagens de erro ou aviso geradas pela solicitação de conversão.
Recupere os resultados.
Para obter o documento PDF, execute as seguintes ações:
CreatePDFResult
do objeto getCreatedDocument
, que retorna um objeto com.adobe.idp.Document
.com.adobe.idp.Document
do objeto copyToFile
para extrair o documento PDF do objeto criado na etapa anterior.Se você usou o método createPDF2
para obter o documento de log (não aplicável às conversões HTML), execute as seguintes ações:
CreatePDFResult
do objeto getLogDocument
. Isso retorna um objeto com.adobe.idp.Document
.com.adobe.idp.Document
do objeto copyToFile
para extrair o documento de log.Consulte também:
Incluindo arquivos da biblioteca Java AEM Forms
Configuração das propriedades de conexão
Converta um documento do Microsoft Word em um documento PDF usando a API Gerar PDF (serviço da Web):
Incluir arquivos de projeto.
Crie um projeto do Microsoft .NET que use MTOM. Certifique-se de usar a seguinte definição WSDL: http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Crie um cliente Gerar PDF.
Crie um objeto GeneratePDFServiceClient
usando seu construtor padrão.
Crie um objeto GeneratePDFServiceClient.Endpoint.Address
usando o construtor System.ServiceModel.EndpointAddress
. Passe um valor de string que especifica o WSDL para o serviço AEM Forms (por exemplo, http://localhost:8080/soap/services/GeneratePDFService?blob=mtom
.) Não é necessário usar o atributo lc_version
. No entanto, especifique ?blob=mtom
.
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo GeneratePDFServiceClient.Endpoint.Binding
. Converta o valor de retorno em BasicHttpBinding
.
Defina o campo System.ServiceModel.BasicHttpBinding
MessageEncoding
do objeto como WSMessageEncoding.Mtom
. Esse valor garante que o MTOM seja usado.
Ative a autenticação HTTP básica executando as seguintes tarefas:
GeneratePDFServiceClient.ClientCredentials.UserName.UserName
.GeneratePDFServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Recupere o arquivo para convertê-lo em um documento PDF.
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar o arquivo que você deseja converter em um documento PDF.System.IO.FileStream
chamando seu construtor. Passe um valor de string que representa o local do arquivo a ser convertido 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 transmitindo a matriz de bytes, a posição inicial e o comprimento do fluxo para leitura.BLOB
atribuindo a sua propriedade MTOM
o conteúdo da matriz de bytes.Converta o arquivo em um documento PDF.
Converta o arquivo em um documento PDF chamando o método GeneratePDFServiceService
do objeto CreatePDF2
e transmitindo os seguintes valores:
BLOB
que representa o arquivo a ser convertido.java.lang.String
que contém as configurações de tipo de arquivo a serem usadas na conversão. As configurações de tipo de arquivo fornecem configurações de conversão para diferentes tipos de arquivo, como .doc ou .xls.Standard
.No Security
.BLOB
opcional que contém configurações a serem aplicadas ao gerar o documento PDF.BLOB
que contém informações de metadados a serem aplicadas ao documento PDF.BLOB
que é preenchido pelo método CreatePDF2
. O método CreatePDF2
preenche esse objeto com o documento convertido. (Esse valor de parâmetro é necessário somente para a invocação do serviço da Web).BLOB
que é preenchido pelo método CreatePDF2
. O método CreatePDF2
preenche esse objeto com o documento de log. (Esse valor de parâmetro é necessário somente para a invocação do serviço da Web).Recupere os resultados.
BLOB
do objeto MTOM
a uma matriz de bytes. A matriz de bytes representa o documento PDF convertido. Certifique-se de usar o objeto BLOB
usado como parâmetro de saída para o método createPDF2
.System.IO.FileStream
chamando seu construtor e transmitindo um valor de string que representa o local do arquivo do documento PDF convertido.System.IO.BinaryWriter
chamando seu construtor e transmitindo o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Invocar o AEM Forms usando o MTOM
Invocando o AEM Forms usando SwaRef
Esta seção descreve como você pode usar a API Gerar PDF para converter programaticamente documentos HTML em documentos PDF.
Para obter mais informações sobre o serviço Gerar PDF, consulte Referência de serviços para AEM Forms.
Para converter um documento HTML em um documento PDF, 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 cliente Gerar PDF
Antes de executar programaticamente uma operação Gerar PDF, é necessário criar um cliente de serviço Gerar PDF. Se você estiver usando a API Java, crie um objeto GeneratePdfServiceClient
. Se você estiver usando a API de serviço da Web, crie um GeneratePDFServiceService
.
Recuperar o conteúdo HTML para converter em um documento PDF
Faça referência ao conteúdo HTML que você deseja converter em um documento PDF. Você pode fazer referência a conteúdo HTML, como um arquivo HTML ou conteúdo HTML que esteja acessível usando um URL.
Converter o conteúdo HTML em um documento PDF
Depois de criar o cliente de serviço, você pode chamar a operação de criação de PDF apropriada. Esta operação precisa de informações sobre o documento a ser convertido, incluindo o caminho para o documento do público alvo.
Recuperar os resultados
Depois que o conteúdo HTML é convertido em um documento PDF, você pode recuperar os resultados e salvar o documento PDF.
Consulte também:
Converter conteúdo HTML em um documento PDF usando a API Java
Converter conteúdo HTML em um documento PDF usando a API de serviço da Web
Incluindo arquivos da biblioteca Java AEM Forms
Configuração das propriedades de conexão
Gerar Start rápidos da API do serviço PDF
Converta um documento HTML em um documento PDF usando a API Gerar PDF (Java):
Incluir arquivos de projeto.
Inclua arquivos JAR do cliente, como adobe-generatepdf-client.jar, no caminho da classe do seu projeto Java.
Crie um cliente Gerar PDF.
Crie um objeto GeneratePdfServiceClient
usando seu construtor e transmitindo um objeto ServiceClientFactory
que contenha propriedades de conexão.
Recupere o conteúdo HTML para converter em um documento PDF.
Recupere o conteúdo HTML criando uma variável de string e atribuindo um URL que aponte para o conteúdo HTML.
Converta o conteúdo HTML em um documento PDF.
Chame o método GeneratePdfServiceClient
do objeto htmlToPDF2
e passe os seguintes valores:
java.lang.String
que contém o URL do arquivo HTML a ser convertido.java.lang.String
que contém as configurações de tipo de arquivo a serem usadas na conversão. As configurações de tipo de arquivo podem incluir níveis de aranha.java.lang.String
que contém o nome das configurações de segurança a serem usadas.com.adobe.idp.Document
opcional que contém configurações a serem aplicadas ao gerar o documento PDF. Se essas informações não forem fornecidas, as configurações serão escolhidas automaticamente com base nos três parâmetros anteriores.com.adobe.idp.Document
que contém informações de metadados a serem aplicadas ao documento PDF.Recupere os resultados.
O método htmlToPDF2
retorna um objeto HtmlToPdfResult
que contém o novo documento PDF que foi gerado. Para obter o documento PDF recém-criado, execute as seguintes ações:
HtmlToPdfResult
do objeto getCreatedDocument
. Isso retorna um objeto com.adobe.idp.Document
.com.adobe.idp.Document
do objeto copyToFile
para extrair o documento PDF do objeto criado na etapa anterior.Consulte também:
Converter Documentos HTML em Documentos PDF
Start rápido (modo SOAP): Converter conteúdo HTML em um documento PDF usando a API Java
Start rápido (modo SOAP): Converter conteúdo HTML em um documento PDF usando a API Java
Incluindo arquivos da biblioteca Java AEM Forms
Configuração das propriedades de conexão
Converta o conteúdo HTML em um documento PDF usando a API Gerar PDF (serviço da Web):
Incluir arquivos de projeto.
Crie um projeto do Microsoft .NET que use MTOM. Certifique-se de usar a seguinte definição WSDL: http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Crie um cliente Gerar PDF.
Crie um objeto GeneratePDFServiceClient
usando seu construtor padrão.
Crie um objeto GeneratePDFServiceClient.Endpoint.Address
usando o construtor System.ServiceModel.EndpointAddress
. Passe um valor de string que especifica o WSDL para o serviço AEM Forms (por exemplo, http://localhost:8080/soap/services/GeneratePDFService?blob=mtom
.) Não é necessário usar o atributo lc_version
. No entanto, especifique ?blob=mtom
.
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo GeneratePDFServiceClient.Endpoint.Binding
. Converta o valor de retorno em BasicHttpBinding
.
Defina o campo System.ServiceModel.BasicHttpBinding
MessageEncoding
do objeto como WSMessageEncoding.Mtom
. Esse valor garante que o MTOM seja usado.
Ative a autenticação HTTP básica executando as seguintes tarefas:
GeneratePDFServiceClient.ClientCredentials.UserName.UserName
.GeneratePDFServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Recupere o conteúdo HTML para converter em um documento PDF.
Recupere o conteúdo HTML criando uma variável de string e atribuindo um URL que aponte para o conteúdo HTML.
Converta o conteúdo HTML em um documento PDF.
Converta o conteúdo HTML em um documento PDF chamando o método GeneratePDFServiceService
do objeto HtmlToPDF2
e passe os seguintes valores:
java.lang.String
que contém as configurações de tipo de arquivo a serem usadas na conversão.BLOB
opcional que contém configurações a serem aplicadas ao gerar o documento PDF.BLOB
que contém informações de metadados a serem aplicadas ao documento PDF.BLOB
que é preenchido pelo método CreatePDF2
. O método CreatePDF2
preenche esse objeto com o documento convertido. (Esse valor de parâmetro é necessário somente para a invocação do serviço da Web).Recupere os resultados.
BLOB
do objeto MTOM
a uma matriz de bytes. A matriz de bytes representa o documento PDF convertido. Certifique-se de usar o objeto BLOB
usado como parâmetro de saída para o método HtmlToPDF2
.System.IO.FileStream
chamando seu construtor e transmitindo um valor de string que representa o local do arquivo do documento PDF convertido.System.IO.BinaryWriter
chamando seu construtor e transmitindo o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Converter Documentos HTML em Documentos PDF
Invocar o AEM Forms usando o MTOM
Invocando o AEM Forms usando SwaRef
Esta seção descreve como você pode usar a API Gerar PDF Java e a API de serviço da Web para converter programaticamente um documento PDF em um arquivo RTF, que é um exemplo de um formato que não seja de imagem. Outros formatos que não sejam de imagem incluem HTML, texto, DOC e EPS. Ao converter um documento PDF em RTF, verifique se o documento PDF não contém elementos de formulário, como um botão Enviar. Elementos de formulário não são convertidos.
Para obter mais informações sobre o serviço Gerar PDF, consulte Referência de serviços para AEM Forms.
Para converter um documento PDF em qualquer um dos tipos suportados, execute as seguintes etapas:
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 cliente Gerar PDF
Antes de executar programaticamente uma operação Gerar PDF, é necessário criar um cliente de serviço Gerar PDF. Se você estiver usando a API Java, crie um objeto GeneratePdfServiceClient
. Se você estiver usando a API de serviço da Web, crie um objeto GeneratePDFServiceService
.
Recuperar o documento PDF a ser convertido
Recupere o documento PDF para convertê-lo em um formato que não seja de imagem.
Converter o documento PDF
Depois de criar o cliente de serviço, você pode chamar a operação de exportação de PDF. Esta operação precisa de informações sobre o documento a ser convertido, incluindo o caminho para o documento do público alvo.
Salvar o arquivo convertido
Salve o arquivo convertido. Por exemplo, se você converter um documento PDF em um arquivo RTF, salve o documento convertido em um arquivo RTF.
Consulte também:
Converter um documento PDF em um arquivo RTF usando a API Java
Converter um documento PDF em um arquivo RTF usando a API de serviço da Web
Incluindo arquivos da biblioteca Java AEM Forms
Configuração das propriedades de conexão
Gerar Start rápidos da API do serviço PDF
Converta um documento PDF em um arquivo RTF usando a API Gerar PDF (Java):
Incluir arquivos de projeto.
Inclua arquivos JAR do cliente, como adobe-generatepdf-client.jar, no caminho da classe do seu projeto Java.
Crie um cliente Gerar PDF.
Crie um objeto GeneratePdfServiceClient
usando seu construtor e transmitindo um objeto ServiceClientFactory
que contenha propriedades de conexão.
Recupere o documento PDF a ser convertido.
java.io.FileInputStream
que represente o documento PDF a ser convertido usando seu construtor. Passe um valor de string que especifica o local do documento PDF.com.adobe.idp.Document
usando seu construtor e transmitindo o objeto java.io.FileInputStream
.Converta o documento PDF.
Chame o método GeneratePdfServiceClient
do objeto exportPDF2
e passe os seguintes valores:
com.adobe.idp.Document
que representa o arquivo PDF a ser convertido.java.lang.String
que contém o nome do arquivo a ser convertido.java.lang.String
que contém o nome das configurações do Adobe PDF.ConvertPDFFormatType
que especifica o tipo de arquivo de público alvo para a conversão.com.adobe.idp.Document
opcional que contém configurações a serem aplicadas ao gerar o documento PDF.O método exportPDF2
retorna um objeto ExportPDFResult
que contém o arquivo convertido.
Converta o documento PDF.
Para obter o arquivo recém-criado, execute as seguintes ações:
ExportPDFResult
do objeto getConvertedDocument
. Isso retorna um objeto com.adobe.idp.Document
.com.adobe.idp.Document
do objeto copyToFile
para extrair o novo documento.Consulte também:
Start rápido (modo SOAP): Converter conteúdo HTML em um documento PDF usando a API Java
Incluindo arquivos da biblioteca Java AEM Forms
Configuração das propriedades de conexão
Converta um documento PDF em um arquivo RTF usando a API Gerar PDF (serviço da Web):
Incluir arquivos de projeto.
Crie um projeto do Microsoft .NET que use MTOM. Certifique-se de usar a seguinte definição WSDL: http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Crie um cliente Generate PDf.
Crie um objeto GeneratePDFServiceClient
usando seu construtor padrão.
Crie um objeto GeneratePDFServiceClient.Endpoint.Address
usando o construtor System.ServiceModel.EndpointAddress
. Passe um valor de string que especifica o WSDL para o serviço AEM Forms (por exemplo, http://localhost:8080/soap/services/GeneratePDFService?blob=mtom
.) Não é necessário usar o atributo lc_version
. No entanto, especifique ?blob=mtom
.
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo GeneratePDFServiceClient.Endpoint.Binding
. Converta o valor de retorno em BasicHttpBinding
.
Defina o campo System.ServiceModel.BasicHttpBinding
MessageEncoding
do objeto como WSMessageEncoding.Mtom
. Esse valor garante que o MTOM seja usado.
Ative a autenticação HTTP básica executando as seguintes tarefas:
GeneratePDFServiceClient.ClientCredentials.UserName.UserName
.GeneratePDFServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Recupere o documento PDF a ser convertido.
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar um documento PDF que é convertido.System.IO.FileStream
chamando seu construtor e transmitindo um valor de string que representa o local do arquivo do documento PDF 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 transmitindo a matriz de bytes, a posição inicial e o comprimento do fluxo para leitura.BLOB
atribuindo a sua propriedade MTOM
o conteúdo da matriz de bytes.Converta o documento PDF.
Chame o método GeneratePDFServiceServiceWse
do objeto ExportPDF2
e passe os seguintes valores:
BLOB
que representa o arquivo PDF a ser convertido.java.lang.String
que especifica o local do arquivo.RTF
.BLOB
opcional que contém configurações a serem aplicadas ao gerar o documento PDF.BLOB
que é preenchido pelo método ExportPDF2
. O método ExportPDF2
preenche esse objeto com o documento convertido. (Esse valor de parâmetro é necessário somente para a invocação do serviço da Web).Salve o arquivo convertido.
BLOB
do objeto MTOM
a uma matriz de bytes. A matriz de bytes representa o documento RTF convertido. Certifique-se de usar o objeto BLOB
usado como parâmetro de saída para o método ExportPDF2
.System.IO.FileStream
chamando seu construtor. Passe um valor de string que representa a localização do arquivo RTF.System.IO.BinaryWriter
chamando seu construtor e transmitindo o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Invocar o AEM Forms usando o MTOM
Invocando o AEM Forms usando SwaRef
Esta seção explica como adicionar suporte para formatos de arquivo nativos adicionais. Ele fornece uma visão geral das interações entre o serviço Gerar PDF e os aplicativos nativos que esse serviço usa para converter formatos de arquivo nativos em PDF.
Esta seção também explica o seguinte:
O serviço Gerar PDF converte formatos de arquivo nativos chamando o aplicativo associado ao formato de arquivo e interagindo com o aplicativo para imprimir o documento usando a impressora padrão. A impressora padrão deve ser configurada como a impressora Adobe PDF.
Esta ilustração mostra os componentes e drivers envolvidos com o suporte a aplicativos nativos. Também menciona as gramáticas XML que influenciam as interações.
Interações de componentes para conversão de arquivos nativos
Este documento usa o termo aplicativo nativo para indicar o aplicativo usado para produzir um formato de arquivo nativo, como o Microsoft Word.
O AppMonis é um componente corporativo que interage com um aplicativo nativo da mesma forma que um usuário navegava pelas caixas de diálogo apresentadas por esse aplicativo. As gramáticas XML usadas pelo AppMon para instruir um aplicativo, como o Microsoft Word, a abrir e imprimir um arquivo envolvem estas tarefas sequenciais:
O AppMon usa APIs Win32 padrão para interagir com aplicativos de terceiros a fim de transferir eventos de interface como pressionamentos de teclas e cliques do mouse, o que é útil para controlar esses aplicativos para produzir arquivos PDF deles.
Devido a uma limitação com essas APIs do Win32, o AppMon não é capaz de despachar esses eventos de interface para alguns tipos específicos de janelas, como barras de menu flutuantes (encontradas em alguns aplicativos, como o TextPad), e certos tipos de caixas de diálogo cujo conteúdo não pode ser recuperado usando as APIs do Win32.
É fácil identificar visualmente uma barra de menus flutuante; no entanto, talvez não seja possível identificar os tipos especiais de diálogos apenas por inspeção visual. Você precisaria de um aplicativo de terceiros, como o Microsoft Spy++ (parte do ambiente de desenvolvimento do Microsoft Visual C++) ou seu WinID equivalente (que pode ser baixado gratuitamente de https://www.dennisbabkin.com/php/download.php?what=WinID) para examinar uma caixa de diálogo para determinar se o AppMon seria capaz de interagir com ele usando APIs Win32 padrão.
Se o WinID for capaz de extrair o conteúdo da caixa de diálogo, como texto, subjanelas, ID de classe de janela e assim por diante, o AppMon também será capaz de fazer o mesmo.
Esta tabela lista o tipo de informações usadas na impressão de formatos de arquivo nativos.
Tipo de informação |
Descrição |
Modificação/criação de entradas relacionadas a arquivos nativos |
---|---|---|
Configurações administrativas |
Inclui configurações de PDF, configurações de segurança e configurações de tipo de arquivo. As configurações de tipo de arquivo associam extensões de nome de arquivo aos aplicativos nativos correspondentes. As configurações de tipo de arquivo também especificam as configurações nativas do aplicativo usadas para imprimir arquivos nativos. |
Para alterar as configurações de um aplicativo nativo já compatível, o administrador do sistema define as Configurações de tipo de arquivo no console de administração. Para adicionar suporte para um novo formato de arquivo nativo, edite o arquivo manualmente. (Consulte Adicionar ou modificar o suporte para um formato de arquivo nativo.) |
Script |
Especifica interações entre o serviço Gerar PDF e um aplicativo nativo. Tais interações normalmente direcionam o aplicativo para imprimir um arquivo no driver Adobe PDF. O script contém instruções que direcionam o aplicativo nativo para abrir caixas de diálogo específicas e que fornecem respostas específicas a campos e botões nessas caixas de diálogo. |
O serviço Gerar PDF inclui arquivos de script para todos os aplicativos nativos suportados. É possível modificar esses arquivos usando um aplicativo de edição XML. Para adicionar suporte a um novo aplicativo nativo, é necessário criar um novo arquivo de script. (Consulte Criar ou modificar um arquivo XML de diálogo adicional para um aplicativo nativo.) |
Instruções da caixa de diálogo genérica |
Especifica como responder a caixas de diálogo comuns a vários aplicativos. Essas caixas de diálogo são geradas por sistemas operacionais, aplicativos auxiliares (como o PDFMaker) e drivers. O arquivo que contém essas informações é appmon.global.en_US.xml. |
Não modifique este arquivo. |
Instruções da caixa de diálogo específica do aplicativo |
Especifica como responder a caixas de diálogo específicas do aplicativo. O arquivo que contém essas informações é appmon.`[appname]`.dialog.`[locale]`.xml (por exemplo, appmon.word.en_US.xml). |
Não modifique este arquivo. Para adicionar instruções de caixa de diálogo para um novo aplicativo nativo, consulte Criar ou modificar um arquivo XML de diálogo adicional para um aplicativo nativo. |
Instruções adicionais da caixa de diálogo específica do aplicativo |
Especifica substituições e adições às instruções da caixa de diálogo específica do aplicativo. A seção apresenta um exemplo dessas informações. O arquivo que contém essas informações é appmon.'[appname]`.add.`[locale]`.xml. Um exemplo é appmon.add.en_US.xml. |
Arquivos desse tipo podem ser criados e modificados usando um aplicativo de edição XML. (Consulte Criar ou modificar um arquivo XML de diálogo adicional para um aplicativo nativo.) Importante: Você deve criar instruções adicionais de caixa de diálogo específicas ao aplicativo para cada aplicativo nativo que seu servidor suportará. |
Arquivos XML de script direcionam o serviço Gerar PDF para navegar pelas caixas de diálogo do aplicativo da mesma forma que um usuário navegava pelas caixas de diálogo do aplicativo. Arquivos XML de script também direcionam o serviço Gerar PDF para responder às caixas de diálogo, executando ações como pressionar botões, marcar ou desmarcar caixas de seleção ou selecionar itens de menu.
Por outro lado, os arquivos XML de diálogo simplesmente respondem às caixas de diálogo com os mesmos tipos de ações usadas em arquivos XML de script.
Esta seção e a próxima seção usam terminologia diferente para caixas de diálogo e os componentes que contêm, dependendo da perspectiva que está sendo descrita. Os componentes da caixa de diálogo são itens como botões, campos e caixas de combinação.
Quando esta seção e a próxima seção descrevem as caixas de diálogo e seus componentes da perspectiva de um usuário, termos como caixa de diálogo, botão, field e caixa de diálogo são usados.
Quando esta seção e a próxima seção descrevem as caixas de diálogo e seus componentes da perspectiva de sua representação interna, o termo elemento de janela é usado. A representação interna dos elementos da janela é uma hierarquia, na qual cada instância do elemento da janela é identificada por rótulos. A instância do elemento window também descreve suas características físicas e seu comportamento.
Na perspectiva de um usuário, as caixas de diálogo e seus componentes mostram comportamentos diferentes, onde alguns elementos da caixa de diálogo ficam ocultos até serem ativados. De uma perspectiva de representação interna, não existe essa questão de comportamento. Por exemplo, a representação interna de uma caixa de diálogo é semelhante à dos componentes que ela contém, com a exceção de que os componentes estão aninhados dentro da caixa de diálogo.
Esta seção descreve elementos XML que fornecem instruções ao AppMon. Esses elementos têm nomes como o elemento dialog
e o elemento window
. Esse documento usa uma fonte monoespaçada para distinguir elementos XML. O elemento dialog
identifica uma caixa de diálogo que um arquivo de script XML pode fazer com que seja exibido, intencionalmente ou não intencionalmente. O elemento window
identifica um elemento de janela (caixa de diálogo ou os componentes de uma caixa de diálogo).
Este diagrama mostra a hierarquia do script e do XML da caixa de diálogo. Um arquivo XML de script está em conformidade com o schema script.xsd, que inclui (no sentido XML) o schema window.xsd. Da mesma forma, um arquivo XML de diálogo está em conformidade com o schema dialogs.xsd, que também inclui o schema window.xsd.
Hierarquia do XML de script e caixa de diálogo
Um arquivo XML de script especifica uma série de etapas que direcionam o aplicativo nativo para navegar até determinados elementos de janela e fornecer respostas a esses elementos. A maioria das respostas são textos ou pressionamentos de teclas que correspondem à entrada que um usuário fornece a um campo, caixa de combinação ou botão na caixa de diálogo correspondente.
O objetivo do suporte do serviço Gerar PDF para arquivos XML de script é direcionar um aplicativo nativo para imprimir um arquivo nativo. No entanto, os arquivos XML de script podem ser usados para realizar qualquer tarefa que um usuário possa executar ao interagir com as caixas de diálogo do aplicativo nativo.
As etapas em um arquivo XML de script são executadas em ordem, sem nenhuma oportunidade de ramificação. O único teste condicional suportado é para tempo limite/nova tentativa, o que faz com que um script seja encerrado se uma etapa não for concluída com êxito dentro de um período específico e após um número específico de tentativas.
Além das etapas sendo sequenciais, as instruções em uma etapa também são executadas em ordem. Você deve garantir que as etapas e instruções reflitam a ordem na qual um usuário executaria essas mesmas etapas.
Cada etapa em um arquivo XML de script identifica o elemento de janela que deve aparecer se as instruções da etapa forem executadas com êxito. Se uma caixa de diálogo inesperada for exibida durante a execução de uma etapa de script, o serviço Gerar PDF pesquisará os arquivos XML da caixa de diálogo conforme descrito na próxima seção.
A execução de aplicativos nativos exibe caixas de diálogo diferentes, que são exibidas independentemente de os aplicativos nativos estarem em um modo visível ou invisível. As caixas de diálogo podem ser geradas pelo sistema operacional ou pelo próprio aplicativo. Quando os aplicativos nativos estão sendo executados sob controle do serviço Gerar PDF, as caixas de diálogo do sistema e do aplicativo nativo são exibidas em uma janela invisível.
Um arquivo XML de diálogo especifica como o serviço Gerar PDF responde às caixas de diálogo do sistema ou do aplicativo nativo. Os arquivos XML da caixa de diálogo permitem que o serviço Gerar PDF responda a caixas de diálogo não solicitadas de uma forma que facilita o processo de conversão.
Quando o sistema ou aplicativo nativo exibe uma caixa de diálogo que não é manipulada pelo arquivo XML de script em execução no momento, o serviço Gerar PDF pesquisa os arquivos XML de diálogo nessa ordem, parando quando encontra uma correspondência:
[appname]
.adicional.[locale]
.xml[appname]
.[locale]
.xml (não modifique este arquivo.)[locale]
.xml (não modifique este arquivo.)Se o serviço Gerar PDF encontrar uma correspondência para a caixa de diálogo, ele a rejeitará enviando o pressionamento de tecla ou outra ação especificada para a caixa de diálogo. Se as instruções para a caixa de diálogo especificarem uma mensagem de cancelamento, o serviço Gerar PDF finalizará o trabalho em execução no momento e gerará uma mensagem de erro. Essa mensagem de anulação seria especificada no elemento abortMessage
na gramática XML do script.
Se o serviço Gerar PDF encontrar uma caixa de diálogo que não está descrita em nenhum dos arquivos listados anteriormente, o serviço Gerar PDF incorpora a legenda da caixa de diálogo à entrada do arquivo de log. O trabalho em execução no momento expira. Você pode usar as informações no arquivo de log para compor novas instruções no arquivo XML da caixa de diálogo adicional para o aplicativo nativo.
Esta seção descreve as tarefas que você deve executar para suportar outros formatos de arquivo nativos ou para modificar o suporte para um formato de arquivo nativo já suportado.
Antes de poder adicionar ou modificar o suporte, você deve concluir as seguintes tarefas.
Os arquivos XML de diálogo e script exigem que você identifique o elemento de janela (caixa de diálogo, campo ou outro componente de diálogo) ao qual a caixa de diálogo ou o elemento de script está respondendo. Por exemplo, depois que um script chama um menu para um aplicativo nativo, o script deve identificar o elemento de janela nesse menu ao qual os pressionamentos de tecla ou uma ação devem ser aplicados.
É possível identificar facilmente uma caixa de diálogo pela legenda que ela exibe em sua barra de título. No entanto, você deve usar uma ferramenta como o Microsoft Spy++ para identificar elementos de janela de nível inferior. Os elementos de janela de nível inferior podem ser identificados por meio de uma variedade de atributos, que não são óbvios. Além disso, cada aplicativo nativo pode identificar seu elemento de janela de forma diferente. Como resultado, há várias maneiras de identificar um elemento de janela. Esta é a ordem sugerida para considerar a identificação do elemento da janela:
Qualquer um ou uma combinação desses três atributos pode ser usada para identificar uma janela.
Se os atributos não identificarem uma legenda, você poderá identificar um elemento de janela usando seu índice em relação ao pai. Um index especifica a posição do elemento da janela em relação aos seus elementos da janela irmão. Frequentemente, os índices são a única maneira de identificar caixas de combinação.
Esteja ciente destes problemas:
Pri&nt
, o que indica que a tecla de atalho é n. Os títulos de legenda em arquivos XML de script e caixa de diálogo devem omitir os E comercial.^Long caption title$
). (Consulte Usar expressões regulares em atributos de legenda.)&
para e comercial, <
e >
para menos de e maior que símbolos, '
para apóstrofos e "
para aspas.Se você planeja trabalhar em arquivos XML de diálogo ou script, instale o aplicativo Microsoft Spy++.
Os arquivos de diálogo e script residem no arquivo appmondata.jar. Antes de poder modificar qualquer um desses arquivos ou adicionar novo script ou arquivos de diálogo, você deve desempacotar esse arquivo JAR. Por exemplo, suponha que você deseja adicionar suporte ao aplicativo EditPlus. Você cria dois arquivos XML, chamados appmon.editplus.script.en_US.xml e appmon.editplus.script.add.en_US.xml. Esses scripts XML devem ser adicionados ao arquivo adobe-appmondata.jar em dois locais, conforme especificado abaixo:
[AEM forms install directory]\configurationManager
. (se a AEM Forms estiver implantada em outro servidor de aplicativos J2EE, substitua o arquivo adobe-livecycle-native-jHead-x86_win32.ear pelo arquivo EAR que corresponde ao servidor de aplicativos J2EE.)[AEM forms install directory]\deploy
.Depois de adicionar esses arquivos XML ao arquivo adobe-appmondata.jar, é necessário reimplantar o componente GeneratePDF. Para adicionar arquivos XML de diálogo e script ao arquivo adobe-appmondata.jar, execute estas tarefas:
Para reimplantar o componente GeneratePDF
Se quiser direcionar arquivos para um novo aplicativo nativo, você deve criar um arquivo XML de script para esse aplicativo. Se quiser modificar como o serviço Gerar PDF interage com um aplicativo nativo que já é suportado, você deve modificar o script desse aplicativo.
O script contém instruções que navegam pelos elementos de janela do aplicativo nativo e fornecem respostas específicas a esses elementos. O arquivo que contém essas informações é appmon.
[appname]".script.
[locale].xml
. Um exemplo é appmon.notepad.script.en_US.xml.
Usando o aplicativo nativo, determine os elementos da janela que devem ser navegados e cada resposta que deve ser executada para imprimir o documento. Observe as caixas de diálogo que resultam de qualquer resposta. As etapas serão semelhantes a estas:
Use o Microsoft Spy++ para obter as identidades das propriedades de elementos de janela no aplicativo nativo. Você deve ter essas identidades para escrever scripts.
É possível usar expressões regulares nas especificações de legenda. O serviço Gerar PDF usa a classe java.util.regex.Matcher
para suportar expressões regulares. Esse utilitário suporta as expressões regulares descritas em java.util.regex.Pattern
. (Vá para o site Java em https://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html.)
Expressão regular que acomoda o nome do arquivo prefixado ao Bloco de notas no banner Bloco de notas
<!-- The regular expression ".*Notepad" means any number of non-terminating characters followed by Notepad. -->
<step>
<expectedWindow>
<window caption=".*Notepad"/>
</expectedWindow>
</step>
Expressão regular diferenciando Impressão da configuração de impressão
<!-- This regular expression differentiates the Print dialog box from the Print Setup dialog box. The "^" specifies the beginning of the line, and the "$" specifies the end of the line. -->
<windowList>
<window controlID="0x01" caption="^Print$" action="press"/>
</windowList>
Você deve solicitar os elementos window
e windowList
da seguinte maneira:
window
forem exibidos como filhos em um elemento windowList
ou dialog
, ordene esses elementos window
em ordem decrescente, com os comprimentos dos nomes caption
indicando a posição na ordem.windowList
forem exibidos em um elemento window
, ordene esses elementos windowList
em ordem decrescente, com os comprimentos dos atributos caption
do primeiro elemento indexes/
indicando a posição na ordem.Ordenar elementos da janela em um arquivo de diálogo
<!-- The caption attribute in the following window element is 40 characters long. It is the longest caption in this example, so its parent window element appears before the others. -->
<window caption="Unexpected Failure in DebugActiveProcess">
<…>
</window>
<!-- Caption length is 33 characters. -->
<window caption="Adobe Acrobat - License Agreement">
<…>
</window>
<!-- Caption length is 33 characters. -->
<window caption="Microsoft Visual.*Runtime Library">
<…>
</window>
<!-- The caption attribute in the following window element is 28 characters long. It is the shortest caption in this example, so its parent window element appears after the others. -->
<window caption="Adobe Acrobat - Registration">
<…>
</window>
Ordenação de elementos de janela em um elemento windowList
<!-- The caption attribute in the following indexes element is 56 characters long. It is the longest caption in this example, so its parent window element appears before the others. -->
<windowList>
<window caption="Can't exit design mode because.* cannot be created"/%3E%E2%80%89%20%20%20%20%3Cwindow%20className=?lang=pt-BR"Button" caption="OK" action="press"/%3E%E2%80%89%3C/windowList%3E%E2%80%89%3CwindowList%3E%E2%80%89%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Do you want to continue loading the project?"/%3E%E2%80%89%20%20%20%20%3Cwindow%20className=?lang=pt-BR"Button" caption="No" action="press"/%3E%E2%80%89%3C/windowList%3E%E2%80%89%3CwindowList%3E%E2%80%89%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"The macros in this project are disabled"/%3E%E2%80%89%20%20%20%20%3Cwindow%20className=?lang=pt-BR"Button" caption="OK" action="press"/>
</windowList>
Se você criar um script para um aplicativo nativo que não era suportado anteriormente, também deverá criar um arquivo XML de diálogo adicional para esse aplicativo. Cada aplicativo nativo que o AppMon usa deve ter apenas um arquivo XML de diálogo adicional. O arquivo XML da caixa de diálogo adicional é necessário mesmo se nenhuma caixa de diálogo não solicitada for esperada. A caixa de diálogo adicional deve ter pelo menos um elemento window
, mesmo que esse elemento window
seja apenas um espaço reservado.
Neste contexto, o termo adicional significa o conteúdo do arquivo appmon.[applicationname].addition.[locale]
.xml. Esse arquivo especifica substituições e adições ao arquivo XML de diálogo.
Você também pode modificar o arquivo XML de diálogo adicional para um aplicativo nativo para esses fins:
O nome do arquivo que identifica um arquivo XML de diálogo adicional é appmon.[appname].addition.[locale].xml
. Um exemplo é appmon.excel.add.en_US.xml.
O nome do arquivo XML da caixa de diálogo adicional deve usar o formato appmon.[applicationname].addition.[locale].xml
, em que application name deve corresponder exatamente ao nome do aplicativo usado no arquivo de configuração XML e no script.
Nenhum dos aplicativos genéricos especificados no arquivo de configuração native2pdfconfig.xml tem um arquivo XML de diálogo primário. A seção Adicionar ou modificar o suporte para um formato de arquivo nativo descreve essas especificações.
Você deve ordenar os elementos windowList
que aparecem como filhos em um elemento window
. (Consulte Ordenando a janela e os elementos windowList.)
É possível modificar o arquivo XML da caixa de diálogo geral para responder às caixas de diálogo geradas pelo sistema ou para responder às caixas de diálogo comuns a vários aplicativos.
Este procedimento explica como atualizar o arquivo de configuração do serviço Gerar PDF para associar tipos de arquivos a aplicativos nativos. Para atualizar esse arquivo de configuração, é necessário usar o console de administração para exportar os dados de configuração para um arquivo. O nome de arquivo padrão para os dados de configuração é native2pdfconfig.xml.
Atualizar o arquivo de configuração Gerar serviço PDF
filetype-settings
no arquivo native2pdfconfig.xml, conforme necessário.O nome do aplicativo é especificado como o valor do atributo GenericApp
do elemento name
. Esse valor deve corresponder exatamente ao nome correspondente especificado no script que você desenvolve para esse aplicativo. Da mesma forma, o atributo GenericApp
do elemento displayName
deve corresponder exatamente à legenda da janela expectedWindow
do script correspondente. Essa equivalência é avaliada após a resolução de quaisquer expressões regulares que aparecem nos atributos displayName
ou caption
.
Neste exemplo, os dados de configuração padrão fornecidos com o serviço Gerar PDF foram modificados para especificar que o Bloco de notas (não o Microsoft Word) deve ser usado para processar arquivos com a extensão de nome de arquivo .txt. Antes dessa modificação, o Microsoft Word era especificado como o aplicativo nativo que deveria processar esses arquivos.
Modificações para direcionar arquivos de texto para o Bloco de notas (native2pdfconfig.xml)
<filetype-settings>
<!-- Some native app file types were omitted for brevity. -->
<!-- The following GenericApp element specifies Notepad as the native application that should be used to process files that have a txt file name extension. -->
<GenericApp
extensions="txt"
name="Notepad" displayName=".*Notepad"/%3E%E2%80%89%20%20%20%20%20%20%20%20%20%20%20%20%3CGenericApp%E2%80%89%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20extensions=?lang=pt-BR"wpd"
name="WordPerfect" displayName="Corel WordPerfect"/%3E%E2%80%89%20%20%20%20%20%20%20%20%20%20%20%20%3CGenericApp%20extensions=?lang=pt-BR"pmd,pm6,p65,pm"
name="PageMaker" displayName="Adobe PageMaker"/%3E%E2%80%89%20%20%20%20%20%20%20%20%20%20%20%20%3CGenericApp%20extensions=?lang=pt-BR"fm"
name="FrameMaker" displayName="Adobe FrameMaker"/%3E%E2%80%89%20%20%20%20%20%20%20%20%20%20%20%20%3CGenericApp%20extensions=?lang=pt-BR"psd"
name="Photoshop" displayName="Adobe Photoshop"/>
</settings>
</filetype-settings>
Crie uma variável de ambiente que especifique o local do executável do aplicativo nativo. A variável deve usar o formato [applicationname]_PATH
, em que nome_do_aplicativo deve corresponder exatamente ao nome do aplicativo usado no arquivo de configuração XML e no script, e em que o caminho contém o caminho para o executável entre aspas duplos. Um exemplo dessa variável de ambiente é Photoshop_PATH
.
Depois de criar a nova variável de ambiente, você deve reiniciar o servidor no qual o serviço Gerar PDF está implantado.
Criar uma variável do sistema no ambiente do Windows XP
[applicationname]_PATH
.c:\windows\Notepad.exe
Criar uma variável do sistema a partir da linha de comando
Em uma janela de linha de comando, digite a definição da variável, usando este formato:
[applicationname]_PATH=[Full path name]
Por exemplo, digite: NotePad_PATH=C:\WINDOWS\NOTEPAD.EXE
Start um novo prompt de linha de comando para a variável do sistema entrar em vigor.
A AEM Forms inclui arquivos XML de amostra que fazem com que o serviço Gerar PDF use o Bloco de notas para processar quaisquer arquivos com a extensão de nome de arquivo .txt. Este código está incluído nesta seção. Além disso, você deve fazer as outras modificações descritas nesta seção.
Este exemplo contém as caixas de diálogo adicionais para o aplicativo Bloco de notas. Essas caixas de diálogo podem ser adicionadas às especificadas pelo serviço Gerar PDF.
Caixas de diálogo do Bloco de notas(appmon.notpad.add.en_US.xml)
<dialogs app="Notepad" locale="en_US" version="7.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dialogs.xsd">
<window caption="Caption Title">
<windowList>
<window className="Button" caption="OK" action="press"/>
</windowList>
</window>
</dialogs>
Este exemplo especifica como o serviço Gerar PDF deve interagir com o Bloco de notas para imprimir arquivos usando a impressora Adobe PDF.
Arquivo XML de script do Bloco de notas (appmon.notepad.script.en_US.xml)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
*
* ADOBE CONFIDENTIAL
* ___________________
* Copyright 2004 - 2005 Adobe Systems Incorporated
* All Rights Reserved.
*
* NOTICE: All information contained herein is, and remains
* the property of Adobe Systems Incorporated and its suppliers,
* if any. The intellectual and technical concepts contained
* herein are proprietary to Adobe Systems Incorporated and its
* suppliers and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from Adobe Systems Incorporated.
*-->
<!-- This file automates printing of text files via notepad to Adobe PDF printer. In order to see the complete hierarchy we recommend using the Microsoft Spy++ which details the properties of windows necessary to write scripts. In this sample there are total of eight steps-->
<application name="Notepad" version="9.0" locale="en_US" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="scripts.xsd">
<!-- In this step we wait for the application window to appear -->
<step>
<expectedWindow>
<window caption=".*Notepad"/%3E%20%20%20%20%20%20%20%20%3C/expectedWindow%3E%20%20%20%20%3C/step%3E%20%20%20%20%3C!--%20In%20this%20step,%20we%20acquire%20the%20application%20window%20and%20send%20File-%3EOpen%20menu%20bar,%20menu%20item%20commands%20and%20the%20expectation%20is%20the%20windows%20Open%20dialog--%3E%20%20%20%20%3Cstep%3E%20%20%20%20%20%20%20%20%3CacquiredWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR".*Notepad">
<virtualInput>
<menuBar>
<selection>
<name>File</name>
</selection>
<selection>
<name>Open...</name>
</selection>
</menuBar>
</virtualInput>
</window>
</acquiredWindow>
<expectedWindow>
<window caption="Open"/%3E%20%20%20%20%20%20%20%20%3C/expectedWindow%3E%20%20%20%20%3C/step%3E%20%20%20%20%3C!--%20In%20this%20step,%20we%20acquire%20the%20Open%20window%20and%20then%20select%20the%20'Edit'%20widget%20and%20input%20the%20source%20path%20followed%20by%20clicking%20on%20the%20'Open'%20button%20.%20The%20expectation%20of%20this%20'action'%20is%20that%20the%20Open%20dialog%20will%20disappear%20--%3E%20%20%20%20%3Cstep%3E%20%20%20%20%20%20%20%20%3CacquiredWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Open">
<windowList>
<window className="ComboBoxEx32">
<windowList>
<window className="ComboBox">
<windowList>
<window className="Edit" action="inputSourcePath"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CwindowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20className=?lang=pt-BR"Button" caption="Open" action="press"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%3C/acquiredWindow%3E%20%20%20%20%20%20%20%20%3CexpectedWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Open" action="disappear"/%3E%20%20%20%20%20%20%20%20%3C/expectedWindow%3E%20%20%20%20%20%20%20%20%3Cpause%20value=?lang=pt-BR"30"/%3E%20%20%20%20%3C/step%3E%20%20%20%20%3C!--%20In%20this%20step,%20we%20acquire%20the%20application%20window%20and%20send%20File-%3EPrint%20menu%20bar,%20menu%20item%20commands%20and%20the%20expectation%20is%20the%20windows%20Print%20dialog--%3E%20%20%20%20%3Cstep%3E%20%20%20%20%20%20%20%20%3CacquiredWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR".*Notepad">
<virtualInput>
<menuBar>
<selection>
<name>File</name>
</selection>
<selection>
<name>Print...</name>
</selection>
</menuBar>
</virtualInput>
</window>
</acquiredWindow>
<expectedWindow>
<window caption="Print">
</window>
</expectedWindow>
</step>
<!-- In this step, we acquire the Print dialog and click on the 'Preferences' button and the expected window in this case is the dialog with the caption '"Printing Preferences' -->
<step>
<acquiredWindow>
<window caption="Print">
<windowList>
<window caption="General">
<windowList>
<window className="Button" caption="Preferences" action="press"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%3C/acquiredWindow%3E%20%20%20%20%20%20%20%20%3CexpectedWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Printing Preferences"/%3E%20%20%20%20%20%20%20%20%3C/expectedWindow%3E%20%20%20%20%3C/step%3E%20%20%20%20%3C!--%20In%20this%20step,%20we%20acquire%20the%20dialog?lang=pt-BR"Printing Preferences' and select the combo box which is the 10th child of window with caption '"Adobe PDF Settings' and select the first index. (Note: All indeces start with 0.) Besides this we uncheck the box which has the caption '"View Adobe PDF results' and we click on the button OK. The expectation is that 'Printing Preferences' dialog disappears. -->
<step>
<acquiredWindow>
<window caption="Printing Preferences">
<windowList>
<window caption="Adobe PDF Settings">
<windowList>
<window className="Button" caption="View Adobe PDF results" action="uncheck"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CwindowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20className=?lang=pt-BR"Button" caption="Ask to Replace existing PDF file" action="uncheck"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CwindowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20className=?lang=pt-BR"Button" caption="OK" action="press"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%3C/acquiredWindow%3E%20%20%20%20%20%20%20%20%3CexpectedWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Printing Preferences" action="disappear"/%3E%20%20%20%20%20%20%20%20%3C/expectedWindow%3E%20%20%20%20%3C/step%3E%20%20%20%20%3C!--%20In%20this%20step,%20we%20acquire%20the%20'Print'%20dialog%20and%20click%20on%20the%20Print%20button.%20The%20expectation%20is%20that%20the%20dialog%20with%20caption%20'Print'%20disappears.%20In%20this%20case%20we%20use%20the%20regular%20expression%20'^Print"%20for%20specifying%20the%20caption%20given%20there%20could%20be%20multiple%20dialogs%20with%20caption%20that%20includes%20the%20word%20Print.%20--%3E%20%20%20%20%3Cstep%3E%20%20%20%20%20%20%20%20%3CacquiredWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Print">
<windowList>
<window caption="General"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20className=?lang=pt-BR"Button" caption="^Print$" action="press"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%3C/acquiredWindow%3E%20%20%20%20%20%20%20%20%3CexpectedWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Print" action="disappear"/%3E%20%20%20%20%20%20%20%20%3C/expectedWindow%3E%20%20%20%20%3C/step%3E%20%20%20%20%3Cstep%3E%20%20%20%20%20%20%20%20%3CexpectedWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Save PDF File As"/%3E%20%20%20%20%20%20%20%20%3C/expectedWindow%3E%20%20%20%20%3C/step%3E%20%20%20%20%3C!--%20Finally%20in%20this%20step,%20we%20acquire%20the%20dialog%20with%20caption?lang=pt-BR"Save PDF File As" and in the Edit widget type the destination path for the output PDF file and click on the Save button. The expectation is that the dialog disappears-->
<step>
<acquiredWindow>
<window caption="Save PDF File As">
<windowList>
<window className="Edit" action="inputDestinationPath"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CwindowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20className=?lang=pt-BR"Button" caption="Save" action="press"/%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/windowList%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C/window%3E%20%20%20%20%20%20%20%20%3C/acquiredWindow%3E%20%20%20%20%20%20%20%20%3CexpectedWindow%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cwindow%20caption=?lang=pt-BR"Save PDF File As" action="disappear"/%3E%20%20%20%20%20%20%20%20%3C/expectedWindow%3E%20%20%20%20%3C/step%3E%20%20%20%20%3C!--%20We%20can%20always%20set%20a%20retry%20count%20or%20a%20maximum%20time%20for%20a%20step.%20In%20case%20we%20surpass%20these%20limitations,%20PDF%20Generator%20generates%20this%20abort%20message%20and%20terminates%20processing.%20--%3E%20%20%20%20%3CabortMessage%20msg=?lang=pt-BR"15078"/>
</application>