Sobre o Serviço de Assinatura
O serviço de assinatura permite que sua organização proteja a segurança e a privacidade de documentos da Adobe PDF que distribui e recebe. Esse serviço usa assinaturas digitais e certificação para garantir que somente os recipients pretendidos possam alterar documentos. Como os recursos de segurança são aplicados ao próprio documento, ele permanece protegido e controlado por todo o seu ciclo de vida. Um documento permanece protegido além do firewall, quando é baixado offline e quando é enviado de volta à sua organização.
É possível criar um manipulador de assinatura personalizado para o serviço de assinatura, chamado quando determinadas operações são invocadas, como a assinatura de um documento PDF.
Nomes de campos de assinatura
Algumas operações do serviço de assinatura exigem a especificação do nome do campo de assinatura no qual uma operação é executada. Por exemplo, ao assinar um documento PDF, você especifica o nome do campo de assinatura a ser assinado. Suponha que o nome completo de um campo de assinatura seja form1[0].Form1[0].SignatureField1[0]
. Você pode especificar SignatureField1[0]
em vez de form1[0].Form1[0].SignatureField1[0]
.
Às vezes, um conflito faz com que o serviço de assinatura assine (ou execute outra operação que exija o nome do campo de assinatura) o campo errado. Esse conflito é o resultado do nome SignatureField1[0]
que aparece em dois ou mais lugares no mesmo documento PDF. Por exemplo, considere um documento PDF que contém dois campos de assinatura chamados form1[0].Form1[0].SignatureField1[0]
e form1[0].Form1[0].SubForm1[0].SignatureField1[0]
e você especifica SignatureField1[0]
. Nessa situação, o serviço de assinatura assina o primeiro campo de assinatura encontrado ao iterar todos os campos de assinatura no documento.
Se houver vários campos de assinatura localizados em um documento PDF, é recomendável especificar os nomes completos dos campos de assinatura. Ou seja, especifique form1[0].Form1[0].SignatureField1[0]
em vez de SignatureField1[0]
.
Você pode realizar essas tarefas usando o Serviço de assinatura:
Para obter mais informações sobre o serviço de assinatura, consulte Referência de serviços para AEM Forms.
Assinaturas digitais são exibidas em campos de assinatura, que são campos de formulário que contêm uma representação gráfica da assinatura. Os campos de assinatura podem ser visíveis ou invisíveis. Os signatários podem usar um campo de assinatura preexistente ou um campo de assinatura pode ser adicionado programaticamente. Em ambos os casos, o campo de assinatura deve existir antes que um documento PDF possa ser assinado.
Você pode adicionar um campo de assinatura por programação usando a API Java do serviço de assinatura ou a API do serviço da Web de assinatura. É possível adicionar mais de um campo de assinatura a um documento PDF; no entanto, cada nome de campo de assinatura deve ser exclusivo.
Alguns tipos de documentos PDF não permitem adicionar um campo de assinatura por programação. Para obter mais informações sobre o serviço de assinatura e adicionar campos de assinatura, consulte Referência de serviços para AEM Forms.
Para adicionar um campo de assinatura a 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.
Os seguintes arquivos JAR devem ser adicionados ao classpath do seu projeto:
Criar um cliente de assinatura
Antes de poder executar programaticamente uma operação de serviço de assinatura, é necessário criar um cliente de serviço de assinatura.
Obter um documento PDF ao qual um campo de assinatura é adicionado
Você deve obter um documento PDF ao qual um campo de assinatura é adicionado.
Adicionar um campo de assinatura
Para adicionar um campo de assinatura a um documento PDF com êxito, especifique valores de coordenadas que identificam o local do campo de assinatura. (Se você adicionar um campo de assinatura invisível, esses valores não serão necessários.) Além disso, você pode especificar quais campos no documento PDF estão bloqueados depois que uma assinatura é aplicada ao campo de assinatura.
Salvar o documento PDF como um arquivo PDF
Depois que o serviço de assinatura adiciona um campo de assinatura ao documento PDF, você pode salvar o documento como um arquivo PDF para que os usuários possam abri-lo no Acrobat ou no Adobe Reader.
Consulte também:
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Assinar documentos PDF digitalmente
Adicione um campo de assinatura usando a API de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-assinaturas-client.jar, no classpath do seu projeto Java.
Criar um cliente de assinatura
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obter um documento PDF ao qual um campo de assinatura é adicionado
java.io.FileInputStream
que represente o documento PDF ao qual um campo de assinatura é adicionado usando seu construtor e passando 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
.Adicionar um campo de assinatura
Crie um objeto PositionRectangle
que especifica o local do campo de assinatura usando seu construtor. No construtor, especifique valores de coordenadas.
Se desejar, crie um objeto FieldMDPOptions
que especifique os campos bloqueados quando uma assinatura digital for aplicada ao campo de assinatura.
Adicione um campo de assinatura a um documento PDF chamando o método SignatureServiceClient
do objeto e transmitindo os seguintes valores:addSignatureField
com.adobe.idp
. Document
objeto que representa o documento PDF ao qual um campo de assinatura é adicionado.java.lang.Integer
que representa o número da página à qual um campo de assinatura é adicionado.PositionRectangle
que especifica o local do campo de assinatura.FieldMDPOptions
que especifica os campos no documento PDF que são bloqueados depois que uma assinatura digital é aplicada ao campo de assinatura. Esse valor de parâmetro é opcional e você pode passar null
.Um objeto PDFSeedValueOptions
que especifica vários valores de tempo de execução. Esse valor de parâmetro é opcional e você pode passar null
.
O método addSignatureField
retorna um com.adobe.idp
. Document
objeto que representa um documento PDF que contém um campo de assinatura.
Você pode chamar o método SignatureServiceClient
do objeto addInvisibleSignatureField
para adicionar um campo de assinatura invisível.
Salvar o documento PDF como um arquivo PDF
java.io.File
e verifique se a extensão de arquivo é .pdf.com.adobe.idp
. Document
O copyToFile
método do objeto para copiar o conteúdo do Document
objeto para o arquivo. Certifique-se de usar o com.adobe.idp
. Document
objeto retornado pelo addSignatureField
método .Consulte também:
Início rápido da API do Serviço de assinatura
Para adicionar um campo de assinatura usando a API de assinatura (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 de WSDL: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente de assinatura
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Obter um documento PDF ao qual um campo de assinatura é adicionado
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar o documento PDF que conterá um campo de assinatura.System.IO.FileStream
chamando seu construtor e passando 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 passando a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido.BLOB
atribuindo sua propriedade MTOM
ao conteúdo da matriz de bytes.Adicionar um campo de assinatura
Adicione um campo de assinatura ao documento PDF, chamando o método SignatureServiceClient
do objeto addSignatureField
e transmitindo os seguintes valores:
BLOB
que representa o documento PDF ao qual um campo de assinatura é adicionado.PositionRect
que especifica o local do campo de assinatura.FieldMDPOptions
que especifica os campos no documento PDF que são bloqueados depois que uma assinatura digital é aplicada ao campo de assinatura. Esse valor de parâmetro é opcional e você pode passar null
.PDFSeedValueOptions
que especifica vários valores de tempo de execução. Esse valor de parâmetro é opcional e você pode passar null
.O método addSignatureField
retorna um objeto BLOB
que representa um documento PDF que contém um campo de assinatura.
Salvar o documento PDF como um arquivo PDF
System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF que conterá o campo de assinatura e o modo no qual o arquivo será aberto.BLOB
retornado pelo método addSignatureField
. Preencha a matriz de bytes obtendo o valor do membro de dados BLOB
do objeto binaryData
.System.IO.BinaryWriter
chamando seu construtor e passando o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef
Você pode recuperar os nomes de todos os campos de assinatura localizados em um documento PDF que deseja assinar ou certificar. Se você não tiver certeza dos nomes dos campos de assinatura localizados em um documento PDF ou quiser verificar os nomes, poderá recuperá-los programaticamente. O serviço de assinatura retorna o nome totalmente qualificado do campo de assinatura, como form1[0].grantApplication[0].page1[0].SignatureField1[0]
.
Para obter mais informações sobre o serviço de assinatura, consulte Referência de serviços para AEM Forms
Para recuperar nomes de campos de assinatura, 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 classpath do seu projeto:
Para obter informações sobre a localização desses arquivos JAR, consulte Incluindo arquivos da biblioteca Java do AEM Forms.
Criar um cliente de assinatura
Antes de poder executar programaticamente uma operação de serviço de assinatura, é necessário criar um cliente de serviço de assinatura.
Obter o documento PDF que contém campos de assinatura
Recupere um documento PDF que contenha campos de assinatura.
Recuperar os nomes dos campos de assinatura
Você pode recuperar nomes de campos de assinatura depois de recuperar um documento PDF que contém um ou mais campos de assinatura.
Consulte também:
Recuperar nomes de campos de assinatura usando a API Java
Recuperar campo de assinatura usando a API do serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Adicionar campos de assinatura
Recupere nomes de campos de assinatura usando a API de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-assinaturas-client.jar, no classpath do seu projeto Java.
Criar um cliente de assinatura
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obter o documento PDF que contém campos de assinatura
java.io.FileInputStream
que represente o documento PDF que contém campos de assinatura usando seu construtor e passando 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
.Recuperar os nomes dos campos de assinatura
SignatureServiceClient
do objeto e transmitindo o objeto com.adobe.idp.Document
que contém o documento PDF que contém os campos de assinatura. getSignatureFieldList
Esse método retorna um objeto java.util.List
, no qual cada elemento contém um objeto PDFSignatureField
. Com esse objeto, é possível obter informações adicionais sobre um campo de assinatura, como se ele estivesse visível.java.util.List
para determinar se há nomes de campo de assinatura. Para cada campo de assinatura no documento PDF, você pode obter um objeto PDFSignatureField
separado. Para obter o nome do campo de assinatura, chame o método PDFSignatureField
do objeto getName
. Esse método retorna um valor de string que especifica o nome do campo de assinatura.Consulte também:
Recuperando nomes de campos de assinatura
Início rápido (modo SOAP): Recuperação de nomes de campos de assinatura usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Recupere nomes de campos de assinatura usando a API de assinatura (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 de WSDL: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente de assinatura
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Obter o documento PDF que contém campos de assinatura
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar o documento PDF que contém campos de assinatura.System.IO.FileStream
chamando seu construtor e passando 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 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.Recuperar os nomes dos campos de assinatura
SignatureServiceClient
do objeto e transmitindo o objeto BLOB
que contém o documento PDF que contém os campos de assinatura. getSignatureFieldList
Esse método retorna um objeto de coleção MyArrayOfPDFSignatureField
em que cada elemento contém um objeto PDFSignatureField
.MyArrayOfPDFSignatureField
para determinar se há nomes de campos de assinatura. Para cada campo de assinatura no documento PDF, você pode obter um objeto PDFSignatureField
. Para obter o nome do campo de assinatura, chame o método PDFSignatureField
do objeto getName
. Esse método retorna um valor de string que especifica o nome do campo de assinatura.Consulte também:
Recuperando nomes de campos de assinatura
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef
Você pode modificar campos de assinatura localizados em um documento PDF usando a API do Java e a API do serviço da Web. A modificação de um campo de assinatura envolve manipular seus valores de dicionário de bloqueio de campo de assinatura ou valores de dicionário de valor de semente.
Um dicionário de bloqueio de campo especifica uma lista de campos que são bloqueados quando o campo de assinatura é assinado. Um campo bloqueado impede que os usuários façam alterações no campo. Um dicionário de valores de propagação contém informações de restrição que são usadas no momento em que a assinatura é aplicada. Por exemplo, você pode alterar permissões que controlam as ações que podem ocorrer sem invalidar uma assinatura.
Ao modificar um campo de assinatura existente, é possível fazer alterações no documento PDF para refletir as necessidades comerciais em alteração. Por exemplo, um novo requisito comercial pode exigir o bloqueio de todos os campos de documento depois que o documento é assinado.
Esta seção explica como modificar um campo de assinatura alterando tanto o dicionário de bloqueio de campo quanto os valores do dicionário de valor de semente. As alterações feitas no dicionário de bloqueio do campo de assinatura resultam no bloqueio de todos os campos no documento PDF quando um campo de assinatura é assinado. As alterações feitas no dicionário de valor de semente proíbem tipos específicos de alterações no documento.
Para obter mais informações sobre o serviço de assinatura e modificar campos de assinatura, consulte Referência de serviços para AEM Forms.
Para modificar campos de assinatura localizados em um documento PDF, execute as seguintes tarefas:
Incluir arquivos de projeto
Inclua os arquivos necessários no seu 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 classpath do seu projeto:
Para obter informações sobre a localização desses arquivos JAR, consulte Incluindo arquivos da biblioteca Java do LiveCycle.
Criar um cliente de assinatura
Antes de poder executar programaticamente uma operação de serviço de assinatura, é necessário criar um cliente de serviço de assinatura.
Obtenha o documento PDF que contém o campo de assinatura a ser modificado
Recupere um documento PDF que contenha o campo de assinatura a ser modificado.
Definir valores do dicionário
Para modificar um campo de assinatura, atribua valores ao dicionário de bloqueio de campo ou ao dicionário de valor de propagação. Especificar valores de dicionário de bloqueio de campo de assinatura envolve especificar campos de documento PDF que estão bloqueados quando o campo de assinatura é assinado. (Esta seção discute como bloquear todos os campos.)
Os seguintes valores do dicionário de valor de propagação podem ser definidos:
Verificação de revisão: Especifica se a verificação de revogação é executada quando uma assinatura é aplicada ao campo de assinatura.
Opções de certificado: Atribui valores ao dicionário de valores de propagação de certificado. Antes de especificar as opções de certificado, é recomendável familiarizar-se com um dicionário de valor de propagação de certificado. (Consulte Referência de PDF.)
Opções de compilação: Atribui algoritmos de resumo usados para assinatura. Os valores válidos são SHA1, SHA256, SHA384, SHA512 e RIPEMD160.
Filtro: Especifica o filtro usado com o campo de assinatura. Por exemplo, você pode usar o filtro Adobe.PPKLite. (Consulte Referência de PDF.)
Opções de sinalizador: Especifica os valores de sinalizador associados a este campo de assinatura. Um valor de 1 significa que um assinante deve usar apenas os valores especificados para a entrada. Um valor de 0 significa que outros valores são permitidos. Estas são as posições do Bit:
Certificados legais: Quando um documento é certificado, ele é verificado automaticamente para tipos específicos de conteúdo que podem tornar o conteúdo visível de um documento ambíguo ou enganoso. Por exemplo, uma anotação pode obscurecer o texto que é importante para entender o que está sendo certificado. O processo de varredura gera avisos que indicam a presença desse tipo de conteúdo. Também fornece uma explicação adicional do conteúdo que pode ter gerado avisos.
Permissões: Especifica permissões que podem ser usadas em um documento PDF sem invalidar a assinatura.
Motivos: Especifica os motivos pelos quais este documento deve ser assinado.
Carimbo de data/hora: Especifica as opções de carimbo de data e hora. Você pode, por exemplo, definir o URL do servidor de carimbo de data/hora usado.
Versão: Especifica o número mínimo da versão do manipulador de assinatura a ser usado para assinar o campo de assinatura.
Modificar o campo de assinatura
Depois de criar um cliente do Serviço de assinatura, recuperar o documento PDF que contém o campo de assinatura a ser modificado e definir valores do dicionário, você poderá instruir o Serviço de assinatura a modificar o campo de assinatura. O serviço de assinatura retorna um documento PDF que contém o campo de assinatura modificado. O documento PDF original não é afetado.
Salvar o documento PDF como um arquivo PDF
Salve o documento PDF que contém o campo de assinatura modificado como um arquivo PDF, para que os usuários possam abri-lo no Acrobat ou no Adobe Reader.
Consulte também:
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Início rápido da API do Serviço de assinatura
Assinar documentos PDF digitalmente
Modifique um campo de assinatura usando a API de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como o adobe-assinaturas-client.jar, no caminho de classe do seu projeto Java.
Criar um cliente de assinatura
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obtenha o documento PDF que contém o campo de assinatura a ser modificado
java.io.FileInputStream
que represente o documento PDF que contém o campo de assinatura a ser modificado usando seu construtor e passando 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
.Definir valores do dicionário
PDFSignatureFieldProperties
usando seu construtor. Um objeto PDFSignatureFieldProperties
armazena informações do dicionário de bloqueio e do dicionário do valor de propagação do campo de assinatura.PDFSeedValueOptionSpec
usando seu construtor. Esse objeto permite que você defina valores do dicionário de valores de propagação.PDFSeedValueOptionSpec
do objeto setMdpValue
e passando o valor de enumeração MDPPermissions.NoChanges
.FieldMDPOptionSpec
usando seu construtor. Esse objeto permite que você defina valores do dicionário de bloqueio do campo de assinatura.FieldMDPOptionSpec
do objeto setMdpValue
e transmitindo o valor de enumeração FieldMDPAction.ALL
.PDFSignatureFieldProperties
do objeto setSeedValue
e transmitindo o objeto PDFSeedValueOptionSpec
.PDFSignatureFieldProperties
do objeto e transmitindo o objeto FieldMDPOptionSpec
.setFieldMDP
Para ver todos os valores do dicionário do valor de propagação que você pode definir, consulte a referência da classe PDFSeedValueOptionSpec
. (Consulte Referência da API do AEM Forms.)
Modificar o campo de assinatura
Modifique o campo de assinatura chamando o método SignatureServiceClient
do objeto modifySignatureField
e passando os seguintes valores:
com.adobe.idp.Document
que armazena o documento PDF que contém o campo de assinatura a ser modificadoPDFSignatureFieldProperties
que armazena o dicionário de bloqueio de campo de assinatura e as informações do dicionário do valor de propagaçãoO método modifySignatureField
retorna um objeto com.adobe.idp.Document
que armazena um documento PDF que contém o campo de assinatura modificado.
Salvar o documento PDF como um arquivo PDF
java.io.File
e verifique se a extensão do nome de arquivo é .pdf.com.adobe.idp.Document
do objeto copyToFile
para copiar o conteúdo do objeto com.adobe.idp.Document
para o arquivo. Certifique-se de usar o objeto com.adobe.idp.Document
retornado pelo método modifySignatureField
.Modifique um campo de assinatura usando a API de assinatura (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 de WSDL: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente de assinatura
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Obtenha o documento PDF que contém o campo de assinatura a ser modificado
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar o documento PDF que contém o campo de assinatura a ser modificado.System.IO.FileStream
chamando seu construtor e passando 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 passando a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido.BLOB
atribuindo a propriedade MTOM
ao conteúdo da matriz de bytes.Definir valores do dicionário
PDFSignatureFieldProperties
usando seu construtor. Esse objeto armazena informações do dicionário de bloqueio de campo de assinatura e do dicionário do valor de propagação.PDFSeedValueOptionSpec
usando seu construtor. Esse objeto permite que você defina valores do dicionário de valores de propagação.MDPPermissions.NoChanges
ao PDFSeedValueOptionSpec
membro de dados mdpValue
do objeto.FieldMDPOptionSpec
usando seu construtor. Esse objeto permite que você defina valores do dicionário de bloqueio do campo de assinatura.FieldMDPAction.ALL
ao membro de dados FieldMDPOptionSpec
do objeto mdpValue
.PDFSeedValueOptionSpec
ao membro de dados PDFSignatureFieldProperties
do objeto seedValue
.FieldMDPOptionSpec
ao membro de dados PDFSignatureFieldProperties
do objeto fieldMDP
.Para ver todos os valores do dicionário do valor de propagação que você pode definir, consulte a referência da classe PDFSeedValueOptionSpec
. (Consulte Referência da API do AEM Forms).
Modificar o campo de assinatura
Modifique o campo de assinatura chamando o método SignatureServiceClient
do objeto modifySignatureField
e passando os seguintes valores:
BLOB
que armazena o documento PDF que contém o campo de assinatura a ser modificadoPDFSignatureFieldProperties
que armazena o dicionário de bloqueio de campo de assinatura e as informações do dicionário do valor de propagaçãoO método modifySignatureField
retorna um objeto BLOB
que armazena um documento PDF que contém o campo de assinatura modificado.
Salvar o documento PDF como um arquivo PDF
System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF que conterá o campo de assinatura e o modo no qual o arquivo será aberto.BLOB
retornado pelo método addSignatureField
. Preencha a matriz de bytes obtendo o valor do membro de dados BLOB
do objeto MTOM
.System.IO.BinaryWriter
chamando seu construtor e passando o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef
Assinaturas digitais podem ser aplicadas a documentos PDF para fornecer um nível de segurança. Assinaturas digitais, como assinaturas manuscritas, fornecem um meio pelo qual os signatários se identificam e fazem declarações sobre um documento. A tecnologia utilizada para assinar digitalmente documentos ajuda a garantir que tanto o assinante quanto os destinatários sejam claros sobre o que foi assinado e confiantes de que o documento não foi alterado desde que foi assinado.
Os documentos PDF são assinados por meio de tecnologia de chave pública. Um assinante tem duas chaves: uma chave pública e uma chave privada. A chave privada é armazenada em uma credencial do usuário que deve estar disponível no momento da assinatura. A chave pública é armazenada no certificado do usuário que deve estar disponível para os recipients validarem a assinatura. Informações sobre certificados revogados são encontradas nas listas de revogação de certificados (CRLs) e nas respostas do Protocolo de Status de Certificado Online (OCSP) distribuídas pelas Autoridades de Certificados (CAs). O horário da assinatura pode ser obtido de uma fonte confiável conhecida como Autoridade de carimbo de data e hora.
Antes de assinar digitalmente um documento PDF, você deve garantir que adiciona o certificado ao AEM Forms. Um certificado é adicionado usando o console de administração ou de forma programática usando a API do Gerenciador de Confiança. (Consulte Importando Credenciais usando a API do Gerenciador de Confiança.)
Você pode assinar documentos PDF digitalmente de forma programática. Ao assinar digitalmente um documento PDF, você deve fazer referência a uma credencial de segurança que existe no AEM Forms. A credencial é a chave privada usada para assinatura.
O serviço de assinatura executa as seguintes etapas quando um documento PDF é assinado:
Para obter informações sobre como lidar com as credenciais de segurança, consulte o* Guia de instalação e implantação do AEM Forms* para o servidor de aplicativos.
Há diferenças entre documentos de assinatura e de certificação. (Consulte Certificando documentos PDF.)
Nem todos os documentos PDF suportam assinatura. Para obter mais informações sobre o serviço de assinatura e documentos de assinatura digital, consulte Referência de serviços para AEM Forms.
O serviço de assinatura não oferece suporte a arquivos XDP com dados PDF incorporados como entrada para uma operação, como a certificação de um documento. Esta ação resulta no serviço de assinatura gerando um PDFOperationException
. Para resolver esse problema, converta o arquivo XDP em um arquivo PDF usando o serviço Utilitários PDF e passe o arquivo PDF convertido para uma operação de serviço de assinatura. (Consulte Trabalhar com utilitários PDF.)
Credencial do HSM nShield do Cifrador
Ao usar uma credencial HSM do nShield do Cifrador para assinar ou certificar um documento PDF, a nova credencial não poderá ser usada até que o servidor de aplicativos J2EE no qual o AEM Forms é implantado seja reiniciado. No entanto, você pode definir um valor de configuração, resultando na operação de assinatura ou certificação funcionando sem reiniciar o servidor de aplicativos J2EE.
Você pode adicionar o seguinte valor de configuração no arquivo cknfastrc, que está localizado em /opt/nfast/cknfastrc (ou c:\nfast\cknfastrc):
CKNFAST_ASSUME_SINGLE_PROCESS=0
Após adicionar esse valor de configuração ao arquivo cknfastrc, a nova credencial poderá ser usada sem reiniciar o servidor de aplicativos J2EE.
Assinatura não confiável
Ao certificar e assinar o mesmo documento PDF, se a assinatura de certificação não for confiável, um triângulo amarelo será exibido contra a primeira assinatura ao abrir o documento PDF no Acrobat ou Adobe Reader. A assinatura de certificação deve ser confiável para evitar essa situação.
Assinar documentos que são formulários baseados em XFA
Se você tentar assinar um formulário baseado em XFA usando a API do serviço de assinatura, os dados podem estar ausentes no View
Signed
Version
localizado no Acrobat. Por exemplo, considere o seguinte workflow:
Para assinar digitalmente 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.
Os seguintes arquivos JAR devem ser adicionados ao classpath do seu projeto:
Criar um cliente de Assinaturas
Antes de poder executar programaticamente uma operação de serviço de assinatura, é necessário criar um cliente de serviço de assinatura.
Obter o documento PDF para assinar
Para assinar um documento PDF, você deve obter um documento PDF que contenha um campo de assinatura. Se um documento PDF não contiver um campo de assinatura, ele não poderá ser assinado. Um campo de assinatura pode ser adicionado usando o Designer ou de forma programática.
Assinar o documento PDF
Ao assinar um documento PDF, você pode definir opções de tempo de execução usadas pelo serviço de assinatura. Você pode definir as seguintes opções:
Você define opções de aparência usando um objeto PDFSignatureAppearanceOptionSpec
. Por exemplo, você pode exibir a data em uma assinatura chamando o método PDFSignatureAppearanceOptionSpec
do objeto setShowDate
e passando true
.
Você também pode especificar se deve ou não executar uma verificação de revogação que determina se o certificado usado para assinar digitalmente um documento PDF foi revogado. Para executar a verificação de revogação, é possível especificar um dos seguintes valores:
Para executar a verificação de revogação em um certificado, você pode especificar um URL para um servidor de lista de revogação de certificado (CRL) usando um objeto CRLOptionSpec
. No entanto, se você quiser executar a verificação de revogação e não especificar um URL para um servidor CRL, o Serviço de assinatura obterá o URL do certificado.
Em vez de usar um servidor CRL, você pode usar um servidor OCSP (protocolo de status de certificado) online ao executar a verificação de revogação. Normalmente, ao usar um servidor OCSP em vez de um servidor CRL, a verificação de revogação é executada mais rápido. (Consulte "Protocolo de status de certificado online" em https://tools.ietf.org/html/rfc2560.)
Você pode definir a ordem de servidor CRL e OCSP que o serviço de assinatura usa usando Aplicativos e Serviços do Adobe. Por exemplo, se o servidor OCSP estiver definido primeiro em Aplicativos e Serviços do Adobe, o servidor OCSP será verificado, seguido pelo servidor CRL. (Consulte "Gerenciando certificados e credenciais usando o Armazenamento de confiança" na Ajuda do AAC).
Se você especificar não executar a verificação de revogação, o serviço de assinatura não verificará se o certificado usado para assinar ou certificar um documento foi revogado. Ou seja, as informações do CRL e do servidor OCSP são ignoradas.
Embora um CRL ou um servidor OCSP possa ser especificado no certificado, você pode substituir o URL especificado no certificado usando um CRLOptionSpec
e um objeto OCSPOptionSpec
. Por exemplo, para substituir o servidor CRL, você pode chamar o método CRLOptionSpec
do objeto setLocalURI
.
O carimbo de data e hora refere-se ao processo de rastreamento da hora em que um documento assinado ou certificado foi modificado. Depois que um documento é assinado, ele não deve ser modificado, mesmo pelo proprietário do documento. O carimbo de data e hora ajuda a impor a validade de um documento assinado ou certificado. Você pode definir opções de carimbo de data e hora usando um objeto TSPOptionSpec
. Por exemplo, você pode especificar o URL de um servidor de provedor de carimbo de data e hora (TSP).
No Java e no serviço da Web, percorra as seções e os início rápidos correspondentes, a verificação de revogação é usada. Como nenhuma informação do servidor CRL ou OCSP é especificada, as informações do servidor são obtidas do certificado usado para assinar digitalmente o documento PDF.
Para assinar com êxito um documento PDF, você pode especificar o nome totalmente qualificado do campo de assinatura que conterá a assinatura digital, como form1[0].#subform[1].SignatureField3[3]
. Ao usar um campo de formulário XFA, o nome parcial do campo de assinatura também pode ser usado: SignatureField3[3]
.
Você também deve referenciar uma credencial de segurança para assinar digitalmente um documento PDF. Para fazer referência a uma credencial de segurança, especifique um alias. O alias é uma referência a uma credencial real que pode estar em um arquivo PKCS#12 (com uma extensão .pfx) ou em um módulo de segurança de hardware (HSM). Para obter informações sobre as credenciais de segurança, consulte o* Guia de instalação e implantação do AEM Forms* para o servidor de aplicativos.
Salvar o documento PDF assinado
Depois que o serviço de assinatura assinar digitalmente o documento PDF, você pode salvá-lo como um arquivo PDF para que os usuários possam abri-lo no Acrobat ou no Adobe Reader.
Consulte também:
Assinar documentos PDF digitalmente usando a API Java
Assinatura digital de documentos PDF usando a API de serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Adicionar campos de assinatura
Recuperando nomes de campos de assinatura
Assine digitalmente um documento PDF usando a API de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-assinaturas-client.jar, no classpath do seu projeto Java.
Criar um cliente de Assinaturas
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obter o documento PDF para assinar
java.io.FileInputStream
que represente o documento PDF a ser assinado digitalmente usando seu construtor e passando 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
.Assinar o documento PDF
Assine o documento PDF chamando o método SignatureServiceClient
do objeto e transmitindo os seguintes valores:sign
com.adobe.idp.Document
que representa o documento PDF a ser assinado.Credential
que representa a credencial usada para assinar digitalmente o documento PDF. Crie um objeto Credential
chamando o método Credential
estático getInstance
do objeto e passando um valor de string que especifica o valor do alias que corresponde à credencial de segurança.HashAlgorithm
que especifica um membro de dados estáticos que representa o algoritmo de hash a ser usado para compilar o documento PDF. Por exemplo, você pode especificar HashAlgorithm.SHA1
para usar o algoritmo SHA1.PDFSignatureAppearanceOptions
que controla a aparência da assinatura digital. Por exemplo, você pode usar esse objeto para adicionar um logotipo personalizado a uma assinatura digital.java.lang.Boolean
que especifica se a verificação de revogação deve ser feita no certificado do assinante.OCSPOptionSpec
que armazena preferências para suporte ao Protocolo de status de certificado online (OCSP). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.CRLPreferences
que armazena as preferências da lista de revogação de certificado (CRL). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.TSPPreferences
que armazena preferências para suporte ao provedor de carimbo de data/hora (TSP). Esse parâmetro é opcional e pode ser null
. Para obter mais informações, consulte Referência da API do AEM Forms.O método sign
retorna um objeto com.adobe.idp.Document
que representa o documento PDF assinado.
Salvar o documento PDF assinado
java.io.File
e verifique se a extensão de arquivo é .pdf.com.adobe.idp.Document
do objeto copyToFile
e passe java.io.File
para copiar o conteúdo do objeto Document
para o arquivo. Certifique-se de usar o objeto com.adobe.idp.Document
retornado pelo método sign
.Consulte também:
Assinar documentos PDF digitalmente
Início rápido (modo SOAP): Assinando digitalmente um documento PDF usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Para assinar digitalmente um documento PDF usando a API de assinatura (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 de WSDL: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente de Assinaturas
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Obter o documento PDF para assinar
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar um documento PDF assinado.System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF a ser assinado 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 a propriedade MTOM
ao conteúdo da matriz de bytes.Assinar o documento PDF
Assine o documento PDF chamando o método SignatureServiceClient
do objeto e transmitindo os seguintes valores:sign
BLOB
que representa o documento PDF a ser assinado.Credential
que representa a credencial usada para assinar digitalmente o documento PDF. Crie um objeto Credential
usando seu construtor e especifique o alias atribuindo um valor à propriedade Credential
do objeto alias
.HashAlgorithm
que especifica um membro de dados estáticos que representa o algoritmo de hash a ser usado para compilar o documento PDF. Por exemplo, você pode especificar HashAlgorithm.SHA1
para usar o algoritmo SHA1.PDFSignatureAppearanceOptions
que controla a aparência da assinatura digital. Por exemplo, você pode usar esse objeto para adicionar um logotipo personalizado a uma assinatura digital.System.Boolean
que especifica se a verificação de revogação deve ser feita no certificado do assinante. Se essa verificação de revogação for feita, ela será incorporada na assinatura. O padrão é false
.OCSPOptionSpec
que armazena preferências para suporte ao Protocolo de status de certificado online (OCSP). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
. Para obter informações sobre esse objeto, consulte Referência da API do AEM Forms.CRLPreferences
que armazena as preferências da lista de revogação de certificado (CRL). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.TSPPreferences
que armazena preferências para suporte ao provedor de carimbo de data/hora (TSP). Esse parâmetro é opcional e pode ser null
.O método sign
retorna um objeto BLOB
que representa o documento PDF assinado.
Salvar o documento PDF assinado
System.IO.FileStream
chamando seu construtor. Passe um valor de string que representa o local do arquivo do documento PDF assinado e o modo no qual o arquivo deve ser aberto.BLOB
retornado pelo método sign
. Preencha a matriz de bytes obtendo o valor do membro de dados BLOB
do objeto MTOM
.System.IO.BinaryWriter
chamando seu construtor e passando o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Assinar documentos PDF digitalmente
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef
Você pode assinar um formulário interativo criado pelo serviço Forms. Por exemplo, considere o seguinte workflow:
O resultado é um formulário PDF interativo assinado digitalmente. Ao assinar um formulário PDF baseado em um formulário XFA, salve o arquivo PDF como um formulário PDF Adobe Static. Se você tentar assinar um formulário PDF salvo como um formulário PDF dinâmico do Adobe, ocorrerá uma exceção. Como você está assinando o formulário retornado do serviço Forms, verifique se ele contém um campo de assinatura.
Antes de assinar digitalmente um formulário interativo, adicione o certificado à AEM Forms. Um certificado é adicionado usando o console de administração ou de forma programática usando a API do Gerenciador de Confiança. (Consulte Importando Credenciais usando a API do Gerenciador de Confiança.)
Ao usar a API de serviço do Forms, defina a opção de tempo de execução GenerateServerAppearance
como true
. Essa opção de tempo de execução garante que a aparência do formulário gerado no servidor permaneça válida quando aberto no Acrobat ou Adobe Reader. É recomendável definir essa opção de tempo de execução ao gerar um formulário interativo para assinar usando a API do Forms.
Antes de ler Digitalmente Signing Interative Forms, é recomendável que você esteja familiarizado com a assinatura de documentos PDF. (Consulte Assinando documentos PDF digitalmente.)
Para assinar digitalmente um formulário interativo retornado pelo serviço Forms, 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 classpath do seu projeto:
Para obter informações sobre a localização desses arquivos JAR, consulte Incluindo arquivos da biblioteca Java do AEM Forms.
Criar um cliente Forms e Assinaturas
Como esse fluxo de trabalho chama os serviços Forms e Signature, crie um cliente de serviço Forms e um cliente de serviço Signature.
Obter o formulário interativo usando o serviço Forms
Você pode usar o serviço Forms para obter o formulário PDF interativo para assinar. A partir do AEM Forms, é possível passar um objeto com.adobe.idp.Document
para o serviço Forms que contém o formulário a ser renderizado. O nome deste método é renderPDFForm2
. Esse método retorna um objeto com.adobe.idp.Document
que contém o formulário a ser assinado. Você pode passar esta instância com.adobe.idp.Document
para o Serviço de assinatura.
Da mesma forma, se você estiver usando serviços da Web, poderá passar a instância BLOB
que o serviço Forms retorna ao serviço de assinatura.
O início rápido associado à seção Assinatura digital do Forms interativo chama o método renderPDFForm2
.
Assinar o formulário interativo
Ao assinar um documento PDF, você pode definir opções de tempo de execução que o serviço de assinatura usa. Você pode definir as seguintes opções:
Você define opções de aparência usando um objeto PDFSignatureAppearanceOptionSpec
. Por exemplo, você pode exibir a data em uma assinatura chamando o método PDFSignatureAppearanceOptionSpec
do objeto setShowDate
e passando true
.
Salvar o documento PDF assinado
Depois que o serviço de assinatura assinar digitalmente o documento PDF, você poderá salvá-lo como um arquivo PDF. O arquivo PDF pode ser aberto no Acrobat ou no Adobe Reader.
Consulte também:
Assine um formulário interativo digitalmente usando a API Java
Assinar um formulário interativo digitalmente usando a API do serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Assinar documentos PDF digitalmente
Renderização de PDF forms interativos
Assine um formulário interativo digitalmente usando a Forms e a API de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-assinaturas-client.jar e adobe-forms-client.jar, no classpath do seu projeto Java.
Criar um cliente Forms e Assinaturas
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.FormsServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obter o formulário interativo usando o serviço Forms
Crie um objeto java.io.FileInputStream
que represente o documento PDF a ser passado para o serviço Forms usando seu construtor. Passe um valor de string que especifica o local do documento PDF.
Crie um objeto com.adobe.idp.Document
usando seu construtor e transmitindo o objeto java.io.FileInputStream
.
Crie um objeto java.io.FileInputStream
que represente o documento XML que contém dados de formulário a serem passados para o serviço Forms usando seu construtor. Passe um valor de string que especifica o local do arquivo XML.
Crie um objeto com.adobe.idp.Document
usando seu construtor e transmitindo o objeto java.io.FileInputStream
.
Crie um objeto PDFFormRenderSpec
usado para definir opções de tempo de execução. Chame o método PDFFormRenderSpec
do objeto setGenerateServerAppearance
e passe true
.
Chame o método FormsServiceClient
do objeto renderPDFForm2
e passe os seguintes valores:
com.adobe.idp.Document
que contém o formulário PDF a ser renderizado.com.adobe.idp.Document
que contém dados para mesclar com o formulário.PDFFormRenderSpec
que armazena opções de tempo de execução.URLSpec
que contém valores de URI exigidos pelo serviço Forms. Você pode especificar null
para esse valor de parâmetro.java.util.HashMap
que armazena anexos de arquivo. Esse é um parâmetro opcional e você pode especificar null
se não quiser anexar arquivos ao formulário.O método renderPDFForm2
retorna um objeto FormsResult
que contém um fluxo de dados de formulário
Recupere o formulário PDF chamando o método FormsResult
do objeto getOutputContent
. Esse método retorna um objeto com.adobe.idp.Document
que representa o formulário interativo.
Assinar o formulário interativo
Assine o documento PDF chamando o método SignatureServiceClient
do objeto e transmitindo os seguintes valores:sign
com.adobe.idp.Document
que representa o documento PDF a ser assinado. Certifique-se de que esse objeto seja o objeto com.adobe.idp.Document
obtido do serviço Forms.Credential
que representa a credencial usada para assinar digitalmente o documento PDF. Crie um objeto Credential
chamando o método Credential
estático getInstance
do objeto. Passe um valor de string que especifica o valor do alias que corresponde à credencial de segurança.HashAlgorithm
que especifica um membro de dados estáticos que representa o algoritmo de hash a ser usado para compilar o documento PDF. Por exemplo, você pode especificar HashAlgorithm.SHA1
para usar o algoritmo SHA1.PDFSignatureAppearanceOptions
que controla a aparência da assinatura digital. Por exemplo, você pode usar esse objeto para adicionar um logotipo personalizado a uma assinatura digital.java.lang.Boolean
que especifica se a verificação de revogação deve ser feita no certificado do assinante.OCSPPreferences
que armazena preferências para suporte ao Protocolo de status de certificado online (OCSP). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.CRLPreferences
que armazena as preferências da lista de revogação de certificado (CRL). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.TSPPreferences
que armazena preferências para suporte ao provedor de carimbo de data/hora (TSP). Esse parâmetro é opcional e pode ser null
.O método sign
retorna um objeto com.adobe.idp.Document
que representa o documento PDF assinado.
Salvar o documento PDF assinado
java.io.File
e verifique se a extensão do nome de arquivo é .pdf.com.adobe.idp.Document
do objeto copyToFile
e passe java.io.File
para copiar o conteúdo do objeto Document
para o arquivo. Certifique-se de usar o objeto com.adobe.idp.Document
retornado pelo método sign
.Consulte também:
Assinatura digital - Forms interativo
Início rápido (modo SOAP): Assinando digitalmente um documento PDF usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Assine um formulário interativo digitalmente usando a Forms e a Signature API (serviço da Web):
Incluir arquivos de projeto
Crie um projeto do Microsoft .NET que use MTOM. Como esse aplicativo cliente chama dois serviços AEM Forms, crie duas referências de serviço. Use a seguinte definição WSDL para a referência de serviço associada ao serviço de assinatura: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Use a seguinte definição de WSDL para a referência de serviço associada ao serviço da Forms: http://localhost:8080/soap/services/FormsService?WSDL&lc_version=9.0.1
.
Como o tipo de dados BLOB
é comum a ambas as referências de serviço, qualifique totalmente o tipo de dados BLOB
ao usá-lo. Na inicialização rápida do serviço da Web correspondente, todas as instâncias BLOB
são totalmente qualificadas.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente Forms e Assinaturas
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.Atribua o valor constante BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.
Repita essas etapas para o cliente de serviço do Forms.
Obter o formulário interativo usando o serviço Forms
Crie um objeto BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar um documento PDF assinado.
Crie um objeto System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF a ser assinado e o modo no qual o arquivo será aberto.
Crie uma matriz de bytes que armazene o conteúdo do objeto System.IO.FileStream
. Você pode determinar o tamanho da matriz de bytes obtendo a propriedade System.IO.FileStream
do objeto Length
.
Preencha a matriz de bytes com dados de fluxo chamando o método System.IO.FileStream
do objeto Read
e passando a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido.
Preencha o objeto BLOB
atribuindo a propriedade MTOM
ao conteúdo da matriz de bytes.
Crie um objeto BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar dados do formulário.
Crie um objeto System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo XML que contém dados de formulário e o modo no qual o arquivo será aberto.
Crie uma matriz de bytes que armazene o conteúdo do objeto System.IO.FileStream
. Você pode determinar o tamanho da matriz de bytes obtendo a propriedade System.IO.FileStream
do objeto Length
.
Preencha a matriz de bytes com dados de fluxo chamando o método System.IO.FileStream
do objeto Read
e passando a matriz de bytes, a posição inicial e o comprimento do fluxo a ser lido.
Preencha o objeto BLOB
atribuindo a propriedade MTOM
ao conteúdo da matriz de bytes.
Crie um objeto PDFFormRenderSpec
usado para definir opções de tempo de execução. Atribua o valor true
ao campo PDFFormRenderSpec
do objeto generateServerAppearance
.
Chame o método FormsServiceClient
do objeto renderPDFForm2
e passe os seguintes valores:
BLOB
que contém o formulário PDF a ser renderizado.BLOB
que contém dados para mesclar com o formulário.PDFFormRenderSpec
que armazena opções de tempo de execução.URLSpec
que contém valores de URI exigidos pelo serviço Forms. Você pode especificar null
para esse valor de parâmetro.java.util.HashMap
que armazena anexos de arquivo. Esse é um parâmetro opcional e você pode especificar null
se não quiser anexar arquivos ao formulário.FormResult
que é um parâmetro de saída usado para armazenar o formulário interativo.Recupere o formulário PDF chamando o campo FormsResult
outputContent
do objeto. Este campo armazena um objeto BLOB
que representa o formulário interativo.
Assinar o formulário interativo
Assine o documento PDF chamando o método SignatureServiceClient
do objeto e transmitindo os seguintes valores:sign
BLOB
que representa o documento PDF a ser assinado. Use a instância BLOB
retornada pelo serviço Forms.Credential
que representa a credencial usada para assinar digitalmente o documento PDF. Crie um objeto Credential
usando seu construtor e especifique o alias atribuindo um valor à propriedade Credential
do objeto alias
.HashAlgorithm
que especifica um membro de dados estáticos que representa o algoritmo de hash a ser usado para compilar o documento PDF. Por exemplo, você pode especificar HashAlgorithm.SHA1
para usar o algoritmo SHA1.PDFSignatureAppearanceOptions
que controla a aparência da assinatura digital. Por exemplo, você pode usar esse objeto para adicionar um logotipo personalizado a uma assinatura digital.System.Boolean
que especifica se a verificação de revogação deve ser feita no certificado do assinante. Se essa verificação de revogação for feita, ela será incorporada na assinatura. O padrão é false
.OCSPPreferences
que armazena preferências para suporte ao Protocolo de status de certificado online (OCSP). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
. Para obter informações sobre esse objeto, consulte Referência da API do AEM Forms.CRLPreferences
que armazena as preferências da lista de revogação de certificado (CRL). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.TSPPreferences
que armazena preferências para suporte ao provedor de carimbo de data/hora (TSP). Esse parâmetro é opcional e pode ser null
.O método sign
retorna um objeto BLOB
que representa o documento PDF assinado.
Salvar o documento PDF assinado
System.IO.FileStream
chamando seu construtor. Passe um valor de string que representa o local do arquivo do documento PDF assinado e o modo no qual o arquivo deve ser aberto.BLOB
retornado pelo método sign
. Preencha a matriz de bytes obtendo o valor do membro de dados BLOB
do objeto MTOM
.System.IO.BinaryWriter
chamando seu construtor e passando o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Assinatura digital - Forms interativo
Chamar o AEM Forms usando MTOM
Você pode proteger um documento PDF certificando-o com um tipo específico de assinatura chamada assinatura certificada. Uma assinatura certificada é distinguida de uma assinatura digital destas maneiras:
Você pode certificar documentos PDF de forma programática usando a API Java do serviço de assinatura ou a API do serviço da Web de assinatura. Ao certificar um documento PDF, você deve referenciar uma credencial de segurança que existe no serviço de Credencial. Para obter informações sobre a credencial de segurança, consulte o guia Instalar e Implantar AEM Forms para o servidor de aplicativos.
Ao certificar e assinar o mesmo documento PDF, se a assinatura não for confiável, um triângulo amarelo será exibido ao lado da primeira assinatura quando você abrir o documento PDF no Acrobat ou Adobe Reader. A assinatura de certificação deve ser confiável para evitar essa situação.
Ao usar uma credencial HSM do nShield do Cifrador para assinar ou certificar um documento PDF, a nova credencial não poderá ser usada até que o servidor de aplicativos J2EE no qual o AEM Forms é implantado seja reiniciado. No entanto, você pode definir um valor de configuração, resultando na operação de assinatura ou certificação funcionando sem reiniciar o servidor de aplicativos J2EE.
Você pode adicionar o seguinte valor de configuração no arquivo cknfastrc, que está localizado em /opt/nfast/cknfastrc (ou c:\nfast\cknfastrc):
CKNFAST_ASSUME_SINGLE_PROCESS=0
Após adicionar esse valor de configuração ao arquivo cknfastrc, a nova credencial poderá ser usada sem reiniciar o servidor de aplicativos J2EE.
Para obter mais informações sobre o serviço de assinatura e certificar um documento, consulte Referência de serviços para AEM Forms.
Para certificar 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.
Os seguintes arquivos JAR devem ser adicionados ao classpath do seu projeto:
Para obter informações sobre a localização desses arquivos JAR, consulte Incluindo arquivos da biblioteca Java do AEM Forms.
Criar um cliente de assinatura
Antes de poder executar uma operação de Assinatura por programação, você deve criar um cliente de Assinatura.
Obter o documento PDF a ser certificado
Para certificar um documento PDF, você deve obter um documento PDF que contenha um campo de assinatura. Se um documento PDF não contiver um campo de assinatura, ele não poderá ser certificado. Um campo de assinatura pode ser adicionado usando o Designer ou de forma programática. Para obter informações sobre como adicionar um campo de assinatura programaticamente, consulte Adicionar campos de assinatura.
Certificar o documento PDF
Para certificar um documento PDF com êxito, você precisa dos seguintes valores de entrada usados pelo Serviço de assinatura para certificar um documento PDF:
form1[0].#subform[1].SignatureField3[3]
. Ao usar um campo de formulário XFA, o nome parcial do campo de assinatura também pode ser usado: SignatureField3[3]
. Se um valor nulo for passado para o nome do campo, um campo de assinatura invisível será criado e certificado dinamicamente.false
significa que a verificação de revogação não é feita.Salve o documento PDF certificado como um arquivo PDF
Depois que o serviço de assinatura certifica o documento PDF, você pode salvá-lo como um arquivo PDF para que os usuários possam abri-lo no Acrobat ou no Adobe Reader.
Consulte também:
Certificar documentos PDF usando a API Java
Certificar documentos PDF usando a API de serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Adicionar campos de assinatura
Certifique um documento PDF usando a API de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-assinaturas-client.jar, no caminho de classe do seu projeto Java.
Criar um cliente de assinatura
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obter o documento PDF a ser certificado
java.io.FileInputStream
que represente o documento PDF a ser certificado usando seu construtor e transmitindo um valor de string que especifique o local do documento PDF.com.adobe.idp.Document
usando seu construtor e transmitindo o objeto java.io.FileInputStream
.Certificar o documento PDF
Certifique o documento PDF chamando o método SignatureServiceClient
do objeto e transmitindo os seguintes valores:certify
com.adobe.idp.Document
que representa o documento PDF a ser certificado.Credential
que representa a credencial usada para certificar o documento PDF. Crie um objeto Credential
chamando o método Credential
estático getInstance
do objeto e passando um valor de string que especifica o valor do alias que corresponde à credencial de segurança.HashAlgorithm
que especifica um membro de dados estáticos que representa o algoritmo de hash usado para compilar o documento PDF. Por exemplo, você pode especificar HashAlgorithm.SHA1
para usar o algoritmo SHA1.MDPPermissions
que especifica ações que podem ser executadas no documento PDF que invalida a assinatura.PDFSignatureAppearanceOptions
que controla a aparência da assinatura certificada. Se desejar, modifique a aparência da assinatura chamando um método, como setShowDate
.java.lang.Boolean
que especifica se a verificação de revogação deve ser feita no certificado do assinante. Se essa verificação de revogação for feita, ela será incorporada na assinatura. O padrão é false
.java.lang.Boolean
que especifica se o campo de assinatura que está sendo certificado está bloqueado. Se o campo estiver bloqueado, o campo de assinatura será marcado como somente leitura, suas propriedades não poderão ser modificadas e ele não poderá ser apagado por ninguém que não tenha as permissões necessárias. O padrão é false
.OCSPPreferences
que armazena preferências para suporte ao Protocolo de status de certificado online (OCSP). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
. Para obter informações sobre esse objeto, consulte Referência da API do AEM Forms.CRLPreferences
que armazena as preferências da lista de revogação de certificado (CRL). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.TSPPreferences
que armazena preferências para suporte ao provedor de carimbo de data/hora (TSP). Por exemplo, depois de criar um objeto TSPPreferences
, é possível definir o URL do servidor TSP chamando o método TSPPreferences
do objeto setTspServerURL
. Esse parâmetro é opcional e pode ser null
. Para obter mais informações, consulte Referência de serviços para AEM Forms.O método certify
retorna um objeto com.adobe.idp.Document
que representa o documento PDF certificado.
Salve o documento PDF certificado como um arquivo PDF
java.io.File
e verifique se a extensão de arquivo é .pdf.com.adobe.idp.Document
do objeto copyToFile
para copiar o conteúdo do objeto com.adobe.idp.Document
para o arquivo.Consulte também:
Início rápido (modo SOAP): Como certificar um documento PDF usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Certifique um documento PDF usando a API de assinatura (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 de WSDL: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente de assinatura
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Obter o documento PDF a ser certificado
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar um documento PDF certificado.System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF a ser certificado 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 ao membro de dados MTOM
o conteúdo da matriz de bytes.Certificar o documento PDF
Certifique o documento PDF chamando o método SignatureServiceClient
do objeto e transmitindo os seguintes valores:certify
BLOB
que representa o documento PDF a ser certificado.Credential
que representa a credencial usada para certificar o documento PDF. Crie um objeto Credential
usando seu construtor e especifique o alias atribuindo um valor à propriedade Credential
do objeto alias
.HashAlgorithm
que especifica um membro de dados estáticos que representa o algoritmo de hash usado para compilar o documento PDF. Por exemplo, você pode especificar HashAlgorithm.SHA1
para usar o algoritmo SHA1.MDPPermissions
objeto que especifica ações que podem ser executadas no documento PDF que invalidam a assinatura.MDPPermissions
foi passado como o valor de parâmetro anterior deve ser usado.PDFSignatureAppearanceOptions
que controla a aparência da assinatura certificada. Crie um objeto PDFSignatureAppearanceOptions
usando seu construtor. Você pode modificar a aparência da assinatura definindo um de seus membros de dados.System.Boolean
que especifica se a verificação de revogação deve ser feita no certificado do assinante. Se essa verificação de revogação for feita, ela será incorporada na assinatura. O padrão é false
.System.Boolean
que especifica se o campo de assinatura que está sendo certificado está bloqueado. Se o campo estiver bloqueado, o campo de assinatura será marcado como somente leitura, suas propriedades não poderão ser modificadas e ele não poderá ser apagado por ninguém que não tenha as permissões necessárias. O padrão é false
.System.Boolean
que especifica se o campo de assinatura está bloqueado. Ou seja, se você passar true
para o parâmetro anterior, passe true
para esse parâmetro.OCSPPreferences
que armazena preferências para suporte ao Protocolo de status de certificado online (OCSP), que fornece informações sobre o status da credencial usada para certificar o documento PDF. Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.CRLPreferences
que armazena as preferências da lista de revogação de certificado (CRL). Se a verificação de revogação não for feita, esse parâmetro não será usado e você poderá especificar null
.TSPPreferences
que armazena preferências para suporte ao provedor de carimbo de data/hora (TSP). Por exemplo, depois de criar um objeto TSPPreferences
, você pode definir o URL do TSP definindo o membro de dados TSPPreferences
do objeto tspServerURL
. Esse parâmetro é opcional e pode ser null
.O método certify
retorna um objeto BLOB
que representa o documento PDF certificado.
Salve o documento PDF certificado como um arquivo PDF
System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF que conterá o documento PDF certificado e o modo no qual o arquivo será aberto.BLOB
retornado pelo método certify
. Preencha a matriz de bytes obtendo o valor do membro de dados BLOB
do objeto binaryData
.System.IO.BinaryWriter
chamando seu construtor e passando o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef
Assinaturas digitais podem ser verificadas para garantir que um documento PDF assinado não foi modificado e que a assinatura digital é válida. Ao verificar uma assinatura digital, você pode verificar o status da assinatura e as propriedades da assinatura, como a identidade do assinante. Antes de confiar em uma assinatura digital, é recomendável verificá-la. Ao verificar uma assinatura digital, consulte um documento PDF que contém uma assinatura digital.
Suponha que a identidade do assinante seja desconhecida. Ao abrir o documento PDF no Acrobat, uma mensagem de aviso indica que a identidade do assinante é desconhecida, como mostrado na ilustração a seguir.
Da mesma forma, ao verificar programaticamente uma assinatura digital, você pode determinar o status da identidade do assinante. Por exemplo, se você verificar a assinatura digital no documento mostrado na ilustração anterior, o resultado seria que a identidade do assinante é desconhecida.
Para obter mais informações sobre o serviço de assinatura e verificar assinaturas digitais, consulte Referência de serviços para AEM Forms.
Para verificar uma assinatura digital, 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, inclua os arquivos proxy.
Os seguintes arquivos JAR devem ser adicionados ao classpath do seu projeto:
Para obter informações sobre a localização desses arquivos JAR, consulte Incluindo arquivos da biblioteca Java do AEM Forms.
Criar um cliente de assinatura
Antes de executar programaticamente uma operação de serviço de assinatura, crie um cliente de serviço de assinatura.
Obtenha o documento PDF que contém a assinatura a ser verificada
Para verificar uma assinatura usada para assinar digitalmente ou certificar um documento PDF, obtenha um documento PDF que contenha uma assinatura.
Definir opções de tempo de execução de PKI
Defina essas opções de tempo de execução de PKI que o serviço de assinatura usa ao verificar assinaturas em um documento PDF:
Como parte da configuração dessas opções, você pode especificar o tempo de verificação. Por exemplo, você pode selecionar a hora atual (a hora no computador do validador), que indica o uso da hora atual. Para obter informações sobre os diferentes valores de tempo, consulte o valor de enumeração VerificationTime
em AEM Forms API Reference.
Também é possível especificar se a verificação de revogação deve ser executada como parte do processo de verificação. Por exemplo, você pode executar uma verificação de revogação para determinar se o certificado foi revogado. Para obter informações sobre as opções de verificação de revogação, consulte o valor de enumeração RevocationCheckStyle
em AEM Forms API Reference.
Para executar a verificação de revogação em um certificado, especifique um URL para um servidor de lista de revogação de certificado (CRL) usando um objeto CRLOptionSpec
. No entanto, se você não especificar um URL para o servidor CRL, o Serviço de assinatura obterá o URL do certificado.
Em vez de usar um servidor CRL, você pode usar um servidor OCSP (protocolo de status de certificado) online ao executar a verificação de revogação. Normalmente, ao usar um servidor OCSP em vez de um servidor CRL, a verificação de revogação é executada mais rápido. (Consulte Protocolo de Status de Certificado Online.)
Você pode definir a ordem de servidor CRL e OCSP que o serviço de assinatura usa usando Aplicativos e Serviços do Adobe. Por exemplo, se o servidor OCSP estiver definido primeiro em Aplicativos e Serviços do Adobe, o servidor OCSP será verificado, seguido pelo servidor CRL.
Se você não executar a verificação de revogação, o serviço de assinatura não verificará se o certificado foi revogado. Ou seja, as informações do CRL e do servidor OCSP são ignoradas.
Você pode substituir o URL especificado no certificado usando um CRLOptionSpec
e um objeto OCSPOptionSpec
. Por exemplo, para substituir o servidor CRL, você pode chamar o método CRLOptionSpec
do objeto setLocalURI
.
O registro de data e hora é o processo de rastreamento da hora em que um documento assinado ou certificado foi modificado. Depois que um documento é assinado, ninguém pode modificá-lo. O carimbo de data e hora ajuda a impor a validade de um documento assinado ou certificado. Você pode definir opções de carimbo de data e hora usando um objeto TSPOptionSpec
. Por exemplo, você pode especificar o URL de um servidor de provedor de carimbo de data e hora (TSP).
Na inicialização rápida do Java e do serviço da Web, o tempo de verificação é definido como VerificationTime.CURRENT_TIME
e a verificação de revogação é definida como RevocationCheckStyle.BestEffort
. Como nenhuma informação do servidor CRL ou OCSP é especificada, as informações do servidor são obtidas do certificado.
Verificar a assinatura digital
Para verificar uma assinatura com êxito, especifique o nome totalmente qualificado do campo de assinatura que contém a assinatura, como form1[0].#subform[1].SignatureField3[3]
. Ao usar um campo de formulário XFA, também é possível usar o nome parcial do campo de assinatura : SignatureField3
.
Por padrão, o serviço de assinatura limita o tempo que um documento pode ser assinado após o tempo de validação para 65 minutos. Se um usuário tentar verificar uma assinatura no momento atual e a hora de assinatura for posterior à hora atual e estiver dentro de 65 minutos, o serviço de assinatura não criará um erro de verificação.
Para outros valores necessários ao verificar uma assinatura, consulte Referência da API do AEM Forms.
Determine o status da assinatura
Como parte da verificação de uma assinatura digital, você pode verificar o status da assinatura.
Determinar a identidade do assinante
Você pode determinar a identidade do assinante, que pode ser um dos seguintes valores:
Consulte também:
Verificar assinaturas digitais usando a API do Java
Verificar assinaturas digitais usando a API de serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Verifique uma assinatura digital usando a API do serviço de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-assinaturas-client.jar, no classpath do seu projeto Java.
Criar um cliente de assinatura
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obtenha o documento PDF que contém a assinatura a ser verificada
java.io.FileInputStream
que represente o documento PDF que contém a assinatura a ser verificada 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
.Definir opções de tempo de execução de PKI
PKIOptions
usando seu construtor.PKIOptions
do objeto setVerificationTime
e passando um valor de enumeração VerificationTime
que especifica o tempo de verificação.PKIOptions
do objeto setRevocationCheckStyle
e transmitindo um valor de enumeração RevocationCheckStyle
que especifica se a verificação de revogação deve ser executada.Verificar a assinatura digital
Verifique a assinatura chamando o método SignatureServiceClient
do objeto verify2
e transmitindo os seguintes valores:
com.adobe.idp.Document
que contém um documento PDF assinado digitalmente ou certificado.PKIOptions
que contém opções de tempo de execução de PKI.VerifySPIOptions
que contém informações de SPI. Você pode especificar null
para este parâmetro.O método verify2
retorna um objeto PDFSignatureVerificationInfo
que contém informações que podem ser usadas para verificar a assinatura digital.
Determine o status da assinatura
PDFSignatureVerificationInfo
do objeto getStatus
. Este método retorna um objeto SignatureStatus
que especifica o status da assinatura. Por exemplo, se um documento PDF assinado não for modificado, esse método retornará SignatureStatus.DocumentSigNoChanges
.Determinar a identidade do assinante
PDFSignatureVerificationInfo
getSigner
do objeto. Este método retorna um objeto IdentityInformation
.IdentityInformation
do objeto getStatus
para determinar a identidade do assinante. Esse método retorna um valor de enumeração IdentityStatus
que especifica a identidade. Por exemplo, se o assinante for confiável, esse método retornará IdentityStatus.TRUSTED
.Consulte também:
Verificação de assinaturas digitais
Início rápido (modo SOAP): Verificação de uma assinatura digital usando a API do Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Verifique uma assinatura digital usando a API do serviço de assinatura (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 de WSDL: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente de assinatura
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Obtenha o documento PDF que contém a assinatura a ser verificada
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar um documento PDF que contém uma assinatura digital ou certificada para verificar.System.IO.FileStream
chamando seu construtor. Passe um valor de string que representa o local do arquivo do documento PDF assinado e o modo no qual o arquivo deve 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
. Passe a matriz de bytes, a posição inicial e o comprimento do fluxo para ler.BLOB
atribuindo a propriedade MTOM
ao conteúdo da matriz de bytes.Definir opções de tempo de execução de PKI
PKIOptions
usando seu construtor.verificationTime
do objeto um valor de enumeração VerificationTime
que especifica o tempo de verificação.PKIOptions
revocationCheckStyle
do objeto um valor de enumeração RevocationCheckStyle
que especifica se deve executar a verificação de revogação.PKIOptions
Verificar a assinatura digital
Verifique a assinatura chamando o método SignatureServiceClient
do objeto verify2
e transmitindo os seguintes valores:
BLOB
que contém um documento PDF assinado digitalmente ou certificado.PKIOptions
que contém opções de tempo de execução de PKI.VerifySPIOptions
que contém informações de SPI. Você pode especificar null
para este parâmetro.O método verify2
retorna um objeto PDFSignatureVerificationInfo
que contém informações que podem ser usadas para verificar a assinatura digital.
Determine o status da assinatura
Determine o status da assinatura obtendo o valor do PDFSignatureVerificationInfo
membro de dados status
do objeto. Esse membro de dados armazena um objeto SignatureStatus
que especifica o status da assinatura. Por exemplo, se um documento PDF assinado for modificado, o membro de dados status
armazenará o valor SignatureStatus.DocumentSigNoChanges
.
Determinar a identidade do assinante
PDFSignatureVerificationInfo
do objeto signer
. Esse membro retorna um objeto IdentityInformation
.IdentityInformation
do objeto status
para determinar a identidade do assinante. Esse membro de dados retorna um valor de enumeração IdentityStatus
que especifica a identidade. Por exemplo, se o assinante for confiável, esse membro retornará IdentityStatus.TRUSTED
.Consulte também:
Verificação de assinaturas digitais
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef
O AEM Forms fornece o meio de verificar todas as assinaturas digitais localizadas em um documento PDF. Suponha que um documento PDF contenha várias assinaturas digitais como resultado de um processo de negócios que requer assinaturas de vários signatários. Por exemplo, considere uma transação financeira que requer a assinatura de um agente de empréstimo e de um gestor. Você pode usar a API Java do serviço de assinatura ou a API do serviço da Web para verificar todas as assinaturas no documento PDF. Ao verificar várias assinaturas digitais, você pode verificar o status e as propriedades de cada assinatura. Antes de confiar em uma assinatura digital, é recomendável verificá-la. É recomendável que você esteja familiarizado com a verificação de uma assinatura digital única.
Para obter mais informações sobre o serviço de assinatura e verificar assinaturas digitais, consulte Referência de serviços para AEM Forms.
Para verificar várias assinaturas digitais, 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, inclua os arquivos proxy.
Os seguintes arquivos JAR devem ser adicionados ao classpath do seu projeto:
Para obter informações sobre a localização desses arquivos JAR, consulte Incluindo arquivos da biblioteca Java do AEM Forms.
Criar um cliente de assinatura
Antes de executar programaticamente uma operação de serviço de assinatura, crie um cliente de serviço de assinatura.
Obtenha o documento PDF que contém as assinaturas para verificar
Para verificar uma assinatura usada para assinar digitalmente ou certificar um documento PDF, obtenha um documento PDF que contenha uma assinatura.
Definir opções de tempo de execução de PKI
Defina essas opções de tempo de execução de PKI que o serviço de assinatura usa ao verificar todas as assinaturas em um documento PDF:
Como parte da configuração dessas opções, você pode especificar o tempo de verificação. Por exemplo, você pode selecionar a hora atual (a hora no computador do validador), que indica o uso da hora atual. Para obter informações sobre os diferentes valores de tempo, consulte o valor de enumeração VerificationTime
em AEM Forms API Reference.
Também é possível especificar se a verificação de revogação deve ser executada como parte do processo de verificação. Por exemplo, você pode executar uma verificação de revogação para determinar se o certificado foi revogado. Para obter informações sobre as opções de verificação de revogação, consulte o valor de enumeração RevocationCheckStyle
em AEM Forms API Reference.
Para executar a verificação de revogação em um certificado, especifique um URL para um servidor de lista de revogação de certificado (CRL) usando um objeto CRLOptionSpec
. No entanto, se você não especificar um URL para um servidor CRL, o Serviço de assinatura obterá o URL do certificado.
Em vez de usar um servidor CRL, você pode usar um servidor OCSP (protocolo de status de certificado) online ao executar a verificação de revogação. Normalmente, ao usar um servidor OCSP em vez de um servidor CRL, a verificação de revogação é executada mais rápido. (Consulte Protocolo de Status de Certificado Online.)
Você pode definir a ordem de servidor CRL e OCSP que o serviço de assinatura usa usando Aplicativos e Serviços do Adobe. Por exemplo, se o servidor OCSP for definido primeiro em Aplicativos e Serviços do Adobe, o servidor OCSP será verificado, seguido pelo servidor CRL.
Se você não executar a verificação de revogação, o serviço de assinatura não verificará se o certificado foi revogado. Ou seja, as informações do CRL e do servidor OCSP são ignoradas.
Você pode substituir o URL especificado no certificado usando um CRLOptionSpec
e um objeto OCSPOptionSpec
. Por exemplo, para substituir o servidor CRL, você pode chamar o método CRLOptionSpec
do objeto setLocalURI
.
O registro de data e hora é o processo de rastreamento da hora em que um documento assinado ou certificado foi modificado. Depois que um documento é assinado, ninguém pode modificá-lo. O carimbo de data e hora ajuda a impor a validade de um documento assinado ou certificado. Você pode definir opções de carimbo de data e hora usando um objeto TSPOptionSpec
. Por exemplo, você pode especificar o URL de um servidor de provedor de carimbo de data e hora (TSP).
Na inicialização rápida do Java e do serviço da Web, o tempo de verificação é definido como VerificationTime.CURRENT_TIME
e a verificação de revogação é definida como RevocationCheckStyle.BestEffort
. Como nenhuma informação do servidor CRL ou OCSP é especificada, as informações do servidor são obtidas do certificado.
Recuperar todas as assinaturas digitais
Para verificar todas as assinaturas digitais localizadas em um documento PDF, recupere as assinaturas digitais do documento PDF. Todas as assinaturas são retornadas em uma lista. Como parte da verificação de uma assinatura digital, verifique o status da assinatura.
Ao contrário de quando você verifica uma única assinatura digital, ao verificar várias assinaturas, não é necessário especificar o nome do campo de assinatura.
Iterar por todas as assinaturas
Iterar por cada assinatura. Ou seja, para cada assinatura, verifique a assinatura digital e verifique a identidade do assinante e o status de cada assinatura. (Consulte Verificando Assinaturas Digitais.)
Você não precisa repetir todas as assinaturas se o requisito for todo o documento.
Consulte também:
Verificar várias assinaturas digitais usando a API do Java
Verificação de várias assinaturas digitais usando a API do serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Verifique várias assinaturas digitais usando a API do serviço de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-assinaturas-client.jar, no classpath do seu projeto Java.
Criar um cliente de assinatura
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obtenha o documento PDF que contém as assinaturas para verificar
java.io.FileInputStream
que represente o documento PDF que contém várias assinaturas digitais para verificar 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
.Definir opções de tempo de execução de PKI
PKIOptions
usando seu construtor.PKIOptions
do objeto setVerificationTime
e passando um valor de enumeração VerificationTime
que especifica o tempo de verificação.setRevocationCheckStyle
do objeto e transmitindo um valor de enumeração RevocationCheckStyle
que especifica se a verificação de revogação deve ser executada.PKIOptions
Recuperar todas as assinaturas digitais
Chame o método SignatureServiceClient
do objeto verifyPDFDocument
e passe os seguintes valores:
com.adobe.idp.Document
que contém um documento PDF que contém várias assinaturas digitais.PKIOptions
que contém opções de tempo de execução de PKI.VerifySPIOptions
que contém informações de SPI. Você pode especificar null
para este parâmetro.O método verifyPDFDocument
retorna um objeto PDFDocumentVerificationInfo
que contém informações sobre todas as assinaturas digitais localizadas no documento PDF.
Iterar por todas as assinaturas
PDFDocumentVerificationInfo
do objeto getVerificationInfos
. Este método retorna um objeto java.util.List
em que cada elemento é um objeto PDFSignatureVerificationInfo
. Use um objeto java.util.Iterator
para iterar pela lista de assinaturas.PDFSignatureVerificationInfo
, você pode executar tarefas como determinar o status da assinatura chamando o método PDFSignatureVerificationInfo
do objeto getStatus
. Este método retorna um objeto SignatureStatus
cujo membro de dados estáticos informa sobre o status da assinatura. Por exemplo, se a assinatura for desconhecida, esse método retornará SignatureStatus.DocumentSignatureUnknown
.Consulte também:
Verificação de várias assinaturas digitais
Início rápido (modo SOAP): Verificação de várias assinaturas digitais usando a API do Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Verificação de assinaturas digitais
Configuração das propriedades de conexão
Verifique várias assinaturas digitais usando a API do Serviço de assinatura (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 de WSDL: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente de assinatura
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Obtenha o documento PDF que contém as assinaturas para verificar
BLOB
usando seu construtor. O objeto BLOB
armazena um documento PDF que contém várias assinaturas digitais a serem verificadas.System.IO.FileStream
chamando seu construtor. Passe um valor de string que representa o local do arquivo do documento PDF e o modo no qual o arquivo deve 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
. Passe a matriz de bytes, a posição inicial e o comprimento do fluxo para ler.BLOB
atribuindo a propriedade MTOM
ao conteúdo da matriz de bytes.Definir opções de tempo de execução de PKI
PKIOptions
usando seu construtor.verificationTime
do objeto um valor de enumeração VerificationTime
que especifica o tempo de verificação.PKIOptions
revocationCheckStyle
do objeto um valor de enumeração RevocationCheckStyle
que especifica se deve executar a verificação de revogação.PKIOptions
Recuperar todas as assinaturas digitais
Chame o método SignatureServiceClient
do objeto verifyPDFDocument
e passe os seguintes valores:
BLOB
que contém um documento PDF que contém várias assinaturas digitais.PKIOptions
que contém opções de tempo de execução de PKI.VerifySPIOptions
que contém informações de SPI. Você pode especificar null para este parâmetro.O método verifyPDFDocument
retorna um objeto PDFDocumentVerificationInfo
que contém informações sobre todas as assinaturas digitais localizadas no documento PDF.
Iterar por todas as assinaturas
PDFDocumentVerificationInfo
do objeto. verificationInfos
Esse membro de dados retorna uma matriz Object
onde cada elemento é um objeto PDFSignatureVerificationInfo
.PDFSignatureVerificationInfo
, você pode executar tarefas como determinar o status da assinatura obtendo o membro de dados PDFSignatureVerificationInfo
do objeto status
. Esse membro de dados retorna um objeto SignatureStatus
cujo membro de dados estáticos informa sobre o status da assinatura. Por exemplo, se a assinatura for desconhecida, esse método retornará SignatureStatus.DocumentSignatureUnknown
.Consulte também:
Verificação de várias assinaturas digitais
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef
Assinaturas digitais devem ser removidas de um campo de assinatura antes que uma assinatura digital mais recente possa ser aplicada. Uma assinatura digital não pode ser substituída. Se você tentar aplicar uma assinatura digital a um campo de assinatura que contenha uma assinatura, ocorrerá uma exceção.
Para obter mais informações sobre o serviço de assinatura, consulte Referência de serviços para AEM Forms.
Para remover uma assinatura digital de um campo de assinatura, 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 classpath do seu projeto:
Para obter informações sobre a localização desses arquivos JAR, consulte Incluindo arquivos da biblioteca Java do AEM Forms.
Criar um cliente de assinatura
Antes de poder executar programaticamente uma operação de serviço de assinatura, é necessário criar um cliente de serviço de assinatura.
Obtenha o documento PDF que contém uma assinatura para remover
Para remover uma assinatura de um documento PDF, você deve obter um documento PDF que contenha uma assinatura.
Remova a assinatura digital do campo de assinatura
Para remover com êxito uma assinatura digital de um documento PDF, você deve especificar o nome do campo de assinatura que contém a assinatura digital. Além disso, você deve ter permissão para remover a assinatura digital; caso contrário, ocorrerá uma exceção.
Salvar o documento PDF como um arquivo PDF
Depois que o serviço de assinatura remove uma assinatura digital de um campo de assinatura, você pode salvar o documento PDF como um arquivo PDF, para que os usuários possam abri-lo no Acrobat ou no Adobe Reader.
Consulte também:
Remova assinaturas digitais usando a API Java
Remover assinaturas digitais usando a API de serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Adicionar campos de assinatura
Remova uma assinatura digital usando a API de assinatura (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-assinaturas-client.jar, no caminho de classe do seu projeto Java.
Criar um cliente de assinatura.
ServiceClientFactory
que contenha propriedades de conexão.SignatureServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Obtenha o documento PDF que contém uma assinatura para remover
java.io.FileInputStream
que represente o documento PDF que contém a assinatura a ser removida usando seu construtor e passando 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
.Remova a assinatura digital do campo de assinatura
Remova uma assinatura digital de um campo de assinatura chamando o método SignatureServiceClient
do objeto clearSignatureField
e passando os seguintes valores:
com.adobe.idp.Document
que representa o documento PDF que contém a assinatura a ser removida.O método clearSignatureField
retorna um objeto com.adobe.idp.Document
que representa o documento PDF do qual a assinatura digital foi removida.
Salvar o documento PDF como um arquivo PDF
java.io.File
e verifique se a extensão de arquivo é .pdf.com.adobe.idp.Document
do objeto copyToFile
. Passe o objeto java.io.File
para copiar o conteúdo do objeto com.adobe.idp.Document
para o arquivo. Certifique-se de usar o objeto Document
retornado pelo método clearSignatureField
.Consulte também:
Início rápido (modo SOAP): Remoção de uma assinatura digital usando a API do Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Remova uma assinatura digital usando a API de assinatura (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 de WSDL: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.
Substitua localhost
pelo endereço IP do servidor que hospeda o AEM Forms.
Criar um cliente de assinatura
Crie um objeto SignatureServiceClient
usando seu construtor padrão.
Crie um objeto SignatureServiceClient.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/SignatureService?WSDL
). Você não precisa usar o atributo lc_version
. Este atributo é usado ao criar uma referência de serviço.)
Crie um objeto System.ServiceModel.BasicHttpBinding
obtendo o valor do campo SignatureServiceClient.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:
SignatureServiceClient.ClientCredentials.UserName.UserName
.SignatureServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
ao campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
ao campo BasicHttpBindingSecurity.Security.Mode
.Obtenha o documento PDF que contém uma assinatura para remover
BLOB
usando seu construtor. O objeto BLOB
é usado para armazenar um documento PDF que contém uma assinatura digital a ser removida.System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF assinado 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
. Passe a matriz de bytes, a posição inicial e o comprimento do fluxo para ler.BLOB
atribuindo sua propriedade MTOM
ao conteúdo da matriz de bytes.Remova a assinatura digital do campo de assinatura
Remova a assinatura digital chamando o método SignatureServiceClient
do objeto clearSignatureField
e passando os seguintes valores:
BLOB
que contém o documento PDF assinado.O método clearSignatureField
retorna um objeto BLOB
que representa o documento PDF do qual a assinatura digital foi removida.
Salvar o documento PDF como um arquivo PDF
System.IO.FileStream
chamando seu construtor e passando um valor de string que representa o local do arquivo do documento PDF que contém um campo de assinatura vazio e o modo no qual o arquivo será aberto.BLOB
retornado pelo método sign
. Preencha a matriz de bytes obtendo o valor do membro de dados BLOB
do objeto MTOM
.System.IO.BinaryWriter
chamando seu construtor e passando o objeto System.IO.FileStream
.System.IO.BinaryWriter
do objeto Write
e transmitindo a matriz de bytes.Consulte também:
Chamar o AEM Forms usando MTOM
Chamar o AEM Forms usando SwaRef