Signature Service Java APIクイックスタート(SOAP)

SignatureサービスでJava API Quick Start(SOAP)を使用できます。

クイックスタート(SOAPモード):Java APIを使用したPDFドキュメントへの署名フィールドの追加

クイックスタート(SOAPモード):Java APIを使用した署名フィールド名の取得

クイックスタート(SOAPモード):Java APIを使用した署名フィールドの変更

クイックスタート(SOAPモード):Java APIを使用したPDFドキュメントのデジタル署名

クイックスタート(SOAPモード):Java APIを使用したXFAベースフォームのデジタル署名

クイックスタート(SOAPモード):Java APIを使用したPDFドキュメントの認証

クイックスタート(SOAPモード):Java APIを使用した電子署名の検証

クイックスタート(SOAPモード):Java APIを使用した複数の電子署名の検証

クイックスタート(SOAPモード):Java APIを使用した電子署名の削除

AEM Formsの操作は、AEM Formsの厳密に型指定されたAPIを使用して実行できます。接続モードはSOAPに設定する必要があります。

メモ

「 AEM Formsによるプログラミング」にあるクイックスタートは、JBoss Application ServerとMicrosoft WindowsオペレーティングシステムにデプロイされるFormsサーバーに基づいています。 ただし、UNIXなどの別のオペレーティングシステムを使用している場合は、Windows固有のパスを、該当するオペレーティングシステムでサポートされているパスに置き換えます。 同様に、別のJ2EEアプリケーションサーバーを使用する場合は、有効な接続プロパティを必ず指定してください。 接続プロパティの設定を参照してください。

クイックスタート(SOAPモード):Java APIを使用したPDFドキュメントへの署名フィールドの追加

次のJavaコードの例では、SignatureField1​という名前の署名フィールドを、Loan.pdf​という名前のPDFファイルに基づくPDFドキュメントに追加します。 新しい署名フィールドを含むPDFドキュメントは、LoanSig.pdf​という名前のPDFファイルとして保存されます。 (署名フィールドの追加を参照)。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
     * 5. axis.jar (required for SOAP mode) 
     * 6. commons-codec-1.3.jar (required for SOAP mode) 
     * 7.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 8. commons-discovery.jar (required for SOAP mode) 
     * 9. commons-logging.jar (required for SOAP mode) 
     * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 12. jaxrpc.jar (required for SOAP mode) 
     * 13. log4j.jar (required for SOAP mode) 
     * 14. mail.jar (required for SOAP mode) 
     * 15. saaj.jar (required for SOAP mode) 
     * 16. wsdl4j.jar (required for SOAP mode) 
     * 17. xalan.jar (required for SOAP mode) 
     * 18. xbean.jar (required for SOAP mode) 
     * 19. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.livecycle.signatures.client.types.*; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class AddSignatureFieldSOAP { 
  
     public static void main(String[] args) { 
          
         try 
         { 
          //Set connection properties required to invoke AEM Forms using SOAP mode                                 
          Properties connectionProps = new Properties(); 
          connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
          connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
          connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
          connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
          connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
          
           //Create a ServiceClientFactory instance 
           ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
           //Create a SignatureServiceClient object 
           SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
          
           //Specify a PDF document to which a signature field is added 
           FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan.pdf");     
           Document inDoc = new Document (fileInputStream);  
  
           //Specify the name of the signature field 
           String fieldName = "SignatureField1"; 
  
           //Create a  PositionRectangle object that specifies 
           //the signature fields location 
           PositionRectangle post = new  PositionRectangle(193,47,133,12); 
  
           //Specify the page number that will contain the signature field 
           java.lang.Integer pageNum = new java.lang.Integer(1); 
  
           //Add a signature field to the PDF document 
           Document sigFieldPDF = signClient.addSignatureField( 
              inDoc, 
              fieldName, 
              pageNum, 
              post, 
              null, 
              null); 
          
           //Save the PDF document that contains the signature field                     
           File outFile = new File("C:\\Adobe\LoanSig.pdf"); 
           sigFieldPDF.copyToFile(outFile); 
             } 
          
         catch (Exception ee) 
             { 
                 ee.printStackTrace(); 
             } 
     } 
 } 
  
 

クイックスタート(SOAPモード):Java APIを使用した署名フィールド名の取得

次のJavaコードの例を使用すると、LoanSig.pdf​という名前のPDFドキュメント内にある署名フィールドの名前を取得できます。 (Retrieving Signature Field Namesを参照)。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
     * 4. adobe-utilities.jar 
     * 5. jboss-client.jar (use a different JAR file if the forms server is not deployed 
     * on JBoss) 
     * 6. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
 import java.util.*; 
 import java.io.FileInputStream; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.livecycle.signatures.client.types.*; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class GetSignatureFieldsSOAP { 
  
 public static void main(String[] args) { 
     try 
     { 
         //Set connection properties required to invoke AEM Forms using SOAP mode                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
          
         //Create a ServiceClientFactory instance 
         ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
         //Create a SignatureServiceClient object 
         SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
          
         //Specify a PDF document that contains signature fields 
         FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanSig.pdf");     
         Document inDoc = new Document (fileInputStream); 
              
         //Retrieve the name of the document’s signature fields 
         List fieldNames = signClient.getSignatureFieldList(inDoc); 
  
         //Obtain the name of each signature field by iterating through the  
         //List object 
         Iterator iter = fieldNames.iterator();  
         int i = 0 ;  
         String fieldName=""; 
         while (iter.hasNext()) {  
             PDFSignatureField signatureField = (PDFSignatureField)iter.next();  
             fieldName = signatureField.getName(); 
             System.out.println("The name of the signature field is " +fieldName);  
             i++; 
              } 
         } 
         catch (Exception ee) 
         { 
             ee.printStackTrace(); 
         } 
     } 
 }

クイックスタート(SOAPモード):Java APIを使用した署名フィールドの変更

次のJavaコードの例では、署名フィールドに署名が適用されたときにフォーム内のすべてのフィールドをロックし、変更が許可されないようにして、 SignatureField1という名前の署名フィールドを変更します。 Signatureサービスが変更された署名フィールドを含むPDFドキュメントを返すと、そのPDFドキュメントはLoanSig.pdfという名前のPDFファイルとして保存されます。 (この例は、Signatureサービスに渡されたPDFファイルを上書きします)。 (署名フィールドの変更を参照)。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
     * 4. adobe-utilities.jar 
     * 5. jboss-client.jar (use a different JAR file if the forms server is not deployed 
     * on JBoss) 
     * 6. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
  
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.livecycle.signatures.client.types.*; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class ModifySignatureFieldSOAP { 
      
     public static void main(String[] args) { 
          
     try 
     { 
         //Set connection properties required to invoke AEM Forms using SOAP mode                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
          
         //Create a ServiceClientFactory instance 
         ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
         //Create a SignatureServiceClient object 
         SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
          
         //Specify a PDF document that contains a signature field to modify 
         FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanSig.pdf");     
         Document inDoc = new Document (fileInputStream); 
          
         //Specify the name of the signature field 
         String fieldName = "SignatureField1"; 
          
         //Create a PDFSignatureFieldProperties 
         PDFSignatureFieldProperties fieldProperties = new PDFSignatureFieldProperties(); 
          
          //Create a PDFSeedValueOptionSpec object that stores  
          //seed value dictionary information. 
          PDFSeedValueOptionSpec seedOptionsSpec = new PDFSeedValueOptionSpec(); 
          
          //Disallow changes to the PDF document. Any change to the document invalidates  
          //the signature 
          seedOptionsSpec.setMdpValue(MDPPermissions.NoChanges); 
          
          //Create a FieldMDPOptionSpec object that stores  
          //signature field lock dictionary information. 
          FieldMDPOptionSpec fieldMDPOptionsSpec = new FieldMDPOptionSpec();     
          
          //Lock all fields in the PDF document 
          fieldMDPOptionsSpec.setAction(FieldMDPAction.ALL); 
          
          //Set dictionary information 
          fieldProperties.setSeedValue(seedOptionsSpec); 
          fieldProperties.setFieldMDP(fieldMDPOptionsSpec); 
                  
          //Modify the signature field 
          Document modSignatureField =  signClient.modifySignatureField(inDoc,fieldName,fieldProperties); 
                   
          //Save the PDF document that contains modified signature field 
          File file = new File("C:\\Adobe\LoanSig.pdf"); 
          modSignatureField.copyToFile(file); 
                   
     } 
     catch (Exception ee) 
       { 
         ee.printStackTrace(); 
       } 
     } 
 } 
 

クイックスタート(SOAPモード):Java APIを使用したPDFドキュメントのデジタル署名

次のJavaコードの例では、LoanSig.pdf​というPDFファイルに基づくPDFドキュメントにデジタル署名を行います。 セキュリティ秘密鍵証明書に対して指定されたエイリアスがセキュリティで保護され、失効確認が実行されます。 CRLまたはOCSPサーバー情報が指定されていないので、PDFドキュメントのデジタル署名に使用される証明書からサーバー情報が取得されます。 署名済みのドキュメントは、LoanSigned.pdf​という名前のPDFファイルとして保存されます。 (PDFドキュメントのデジタル署名を参照)。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
     * 4. adobe-utilities.jar 
     * 5. jboss-client.jar (use a different JAR file if the forms server is not deployed 
     * on JBoss) 
     * 6. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.livecycle.signatures.client.types.*; 
 import com.adobe.livecycle.signatures.pki.client.types.common.HashAlgorithm; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class SignDocumentSOAP { 
  
 public static void main(String[] args) { 
          
     try 
     { 
       //Set connection properties required to invoke AEM Forms using SOAP mode                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
      
       //Create a ServiceClientFactory instance 
       ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
       //Create a SignatureServiceClient object 
       SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
          
       //Specify a PDF document to sign 
       FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanSig.pdf");     
       Document credDoc = new Document (fileInputStream); 
      
       //Specify the name of the signature field 
       String fieldName = "SignatureField1"; 
  
       //Create a Credential object 
       Credential myCred = Credential.getInstance("secure"); 
  
       //Specify the reason to sign the document 
       String reason = "The document was reviewed"; 
  
       //Specify the location of the signer 
       String location  = "New York HQ";  
  
       //Specify contact information 
       String contactInfo = "Tony Blue"; 
  
       //Create a PDFSignatureAppearanceOptions object  
       //and show date information 
       PDFSignatureAppearanceOptionSpec appear = new  PDFSignatureAppearanceOptionSpec();  
       appear.setShowDate(true); 
       appear.setShowReason(true); 
      
       //Set revocation checking to false 
       java.lang.Boolean revCheck = new Boolean(true); 
      
       //Create an OCSPOptionSpec object to pass to the sign method 
            OCSPOptionSpec ocspSpec = new OCSPOptionSpec(); 
           
            //Create a CRLOptionSpec object to pass to the sign method 
            CRLOptionSpec crlSpec = new CRLOptionSpec(); 
           
            //Create a TSPOptionSpec object to pass to the sign method 
            TSPOptionSpec tspSpec = new TSPOptionSpec(); 
  
       //Sign the PDF document 
       Document signedDoc = signClient.sign( 
          credDoc, 
          fieldName, 
          myCred, 
          HashAlgorithm.SHA1, 
          reason, 
          location, 
          contactInfo, 
          appear, 
          revCheck, 
         ocspSpec, 
              crlSpec, 
              tspSpec); 
  
       //Save the signed PDF document                         
       File outFile = new File("C:\\Adobe\LoanSigned.pdf"); 
       signedDoc.copyToFile (outFile); 
       } 
      
     catch (Exception ee) 
       { 
         ee.printStackTrace(); 
       } 
       } 
 } 
  
 

クイックスタート(SOAPモード):Java APIを使用したXFAベースフォームのデジタル署名

次のJavaコードの例は、Formsサービスによってレンダリングされるインタラクティブフォームに署名します。 Formsサービスから返されたcom.adobe.idp.DocumentインスタンスがSignatureサービスに渡されます。 署名済みのインタラクティブフォームは、LoanXFASigned.pdf​という名前のPDFファイルとして保存されます。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
     * 4. adobe-utilities.jar 
     * 5. jboss-client.jar (use a different JAR file if the forms server is not deployed 
     * on JBoss) 
     * 6. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
  
 import com.adobe.livecycle.formsservice.client.FormsResult; 
 import com.adobe.livecycle.formsservice.client.FormsServiceClient; 
 import com.adobe.livecycle.formsservice.client.PDFFormRenderSpec; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.livecycle.signatures.client.types.*; 
 import com.adobe.livecycle.signatures.pki.client.types.common.HashAlgorithm; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class SignXFAFormsSOAP { 
  
 public static void main(String[] args) { 
          
     try 
     { 
      
      //Set connection properties required to invoke AEM Forms using SOAP mode                                 
      Properties connectionProps = new Properties(); 
      connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
      connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
      connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
      connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
      connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
          
      //Create a ServiceClientFactory instance 
      ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
      //Get the XFA form to sign 
      Document myForm = GetForm(myFactory); 
      
     //Sign the XFA form 
     SignXFA(myForm,myFactory);  
     } 
      
     catch (Exception ee) 
       { 
         ee.printStackTrace(); 
       } 
       } 
  
  
 //Creates an interactive PDF form based on a XFA form 
 private static Document GetForm(ServiceClientFactory myFactory) 
 { 
      
     try 
     { 
     //Create a FormsServiceClient object 
     FormsServiceClient formsClient = new FormsServiceClient(myFactory);  
  
     //Specify a PDF document to sign 
     FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanSigXFA.pdf");     
     Document xfaForm = new Document (fileInputStream); 
              
     //Retrieve form data 
     FileInputStream cData = new FileInputStream("C:\\Adobe\Loan.xml"); 
     Document oInputData = new Document(cData); 
                              
     //Cache the PDF form 
     PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec(); 
     pdfFormRenderSpec.setGenerateServerAppearance(true); 
              
     //Invoke the renderPDFForm2 method  
     FormsResult formOut = formsClient.renderPDFForm2( 
             xfaForm,               //formQuery 
             oInputData,             //inDataDoc 
             pdfFormRenderSpec,      //PDFFormRenderSpec 
             null,                //urlSpec 
             null            //attachments 
             ); 
  
     //Create a Document object that stores form data 
     Document myForm = formOut.getOutputContent(); 
     return myForm;  
 } 
      
     catch (Exception ee) 
       { 
         ee.printStackTrace(); 
       } 
     return null;  
      
 } 
  
 //Sign the PDF document 
 private static void SignXFA(Document doc, ServiceClientFactory myFactory) 
 { 
     try 
     { 
      
     //Create a SignatureServiceClient object 
      SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
          
      //Specify the name of the signature field 
      String fieldName = "SignatureField1"; 
  
      //Create a Credential object 
      Credential myCred = Credential.getInstance("secure"); 
  
      //Specify the reason to sign the document 
      String reason = "The document was reviewed"; 
  
      //Specify the location of the signer 
      String location  = "New York HQ";  
  
      //Specify contact information 
      String contactInfo = "Tony Blue"; 
  
      //Create a PDFSignatureAppearanceOptions object  
      //and show date information 
      PDFSignatureAppearanceOptionSpec appear = new  PDFSignatureAppearanceOptionSpec();  
      appear.setShowDate(true); 
      appear.setShowReason(true); 
          
      //Set revocation checking to false 
      java.lang.Boolean revCheck = new Boolean(true); 
      
      //Create an OCSPOptionSpec object to pass to the sign method 
      OCSPOptionSpec ocspSpec = new OCSPOptionSpec(); 
      
      //Create a CRLOptionSpec object to pass to the sign method 
      CRLOptionSpec crlSpec = new CRLOptionSpec(); 
      
      //Create a TSPOptionSpec object to pass to the sign method 
      TSPOptionSpec tspSpec = new TSPOptionSpec(); 
  
      //Sign the PDF document 
       Document signedDoc = signClient.sign( 
          doc, 
          fieldName, 
          myCred, 
          HashAlgorithm.SHA1, 
          reason, 
          location, 
          contactInfo, 
          appear, 
          revCheck, 
         ocspSpec, 
         crlSpec, 
         tspSpec); 
  
       //Save the signed PDF document                         
       File outFile = new File("C:\\Adobe\LoanXFASigned.pdf"); 
       signedDoc.copyToFile (outFile); 
 } 
      
     catch (Exception ee) 
       { 
         ee.printStackTrace(); 
       } 
      } 
 } 
 

クイックスタート(SOAPモード):Java APIを使用したPDFドキュメントの認証

次のJavaコードの例では、 LoanSig.pdf​というPDFファイルに基づいてPDFドキュメントを認証しています。 セキュリティ証明書に指定されたエイリアスはセキュリティで保護されており、失効確認は実行されません。 認証済みのドキュメントは、LoanCertified.pdf​という名前のPDFファイルとして保存されます。 (PDFドキュメントの認証を参照)。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
     * 4. adobe-utilities.jar 
     * 5. jboss-client.jar (use a different JAR file if the forms server is not deployed 
     * on JBoss) 
     * 6. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.livecycle.signatures.client.types.*; 
 import com.adobe.livecycle.signatures.pki.client.types.common.HashAlgorithm; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class CertifyDocumentSOAP { 
  
     public static void main(String[] args) { 
     try 
     { 
         //Set connection properties required to invoke AEM Forms using SOAP mode                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
           
       //Create a ServiceClientFactory instance 
       ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
       //Create a SignatureServiceClient object 
       SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
          
       //Specify a PDF document to certify 
       FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanSig.pdf");     
       Document credDoc = new Document (fileInputStream);  
  
       //Specify the name of the signature field 
       String fieldName = "SignatureField1"; 
  
       //Create a Credential object 
       Credential myCred = Credential.getInstance("secure"); 
      
       //Specify the reason to sign the document 
       String reason = "The document was reviewed"; 
  
       //Specify the location of the signer 
       String location  = "My company";  
      
       //Specify contact information 
           String contactInfo = "New York, New York"; 
  
       //Create a PDFSignatureAppearanceOptions object and show date information 
       PDFSignatureAppearanceOptionSpec appear = new  PDFSignatureAppearanceOptionSpec();  
       appear.setShowDate(true); 
  
       //Set revocation checking to false 
            java.lang.Boolean revCheck = new Boolean(false); 
      
            //Set locking to false 
            java.lang.Boolean lockField = new Boolean(false); 
      
            //Specify a legalAttestation value 
            String msg = "Any change to this document will invalidate the certificate";     
      
            //Create objects to pass to the certify method 
            OCSPOptionSpec ocspSpec = new OCSPOptionSpec(); 
            CRLOptionSpec crlSpec = new CRLOptionSpec(); 
            TSPOptionSpec tspSpec = new TSPOptionSpec(); 
           
            //Certify the PDF document 
            Document signedDoc = signClient.certify( 
               credDoc, 
               fieldName, 
               myCred, 
               HashAlgorithm.SHA1, 
               reason, 
               location, 
               contactInfo, 
               MDPPermissions.NoChanges, 
               msg, 
               appear, 
               revCheck, 
               lockField, 
              ocspSpec, 
              crlSpec, 
              tspSpec); 
          
         //Save the signed PDF document                         
              File outFile = new File("C:\\Adobe\LoanCertified.pdf"); 
              signedDoc.copyToFile (outFile); 
         } 
      
     catch (Exception ee) 
         { 
         ee.printStackTrace(); 
         } 
     } 
 }

クイックスタート(SOAPモード):Java APIを使用したデジタル署名の検証

次のJavaコードの例では、LoanSigned.pdfというPDFファイルに基づいた、署名済みPDFドキュメント内の電子署名を検証します。 検証時間は現在時刻に設定され、失効確認オプションはベストエフォートに設定されます。 (「デジタル署名の確認」を参照)。

 /* 
     * This Java Quick Start uses the following JAR files 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
     * 5. axis.jar (required for SOAP mode) 
     * 6. commons-codec-1.3.jar (required for SOAP mode) 
     * 7.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 8. commons-discovery.jar (required for SOAP mode) 
     * 9. commons-logging.jar (required for SOAP mode) 
     * 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 11. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 12. jaxrpc.jar (required for SOAP mode) 
     * 13. log4j.jar (required for SOAP mode) 
     * 14. mail.jar (required for SOAP mode) 
     * 15. saaj.jar (required for SOAP mode) 
     * 16. wsdl4j.jar (required for SOAP mode) 
     * 17. xalan.jar (required for SOAP mode) 
     * 18. xbean.jar (required for SOAP mode) 
     * 19. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
 import java.util.*; 
 import java.io.FileInputStream; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.livecycle.signatures.client.types.*; 
 import com.adobe.livecycle.signatures.pki.client.types.common.RevocationCheckStyle; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class VerifySignatureSOAP{ 
  
     public static void main(String[] args) { 
          
     try 
     { 
       //Set connection properties required to invoke AEM Forms using SOAP mode                                 
       Properties connectionProps = new Properties(); 
       connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
      connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
       connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
       connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
       connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
          
       //Create a ServiceClientFactory instance 
       ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
       //Create a SignatureServiceClient object 
       SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
      
       //Specify a PDF document that contains a digital signature 
       FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanSigned.pdf");     
       Document inDoc = new Document (fileInputStream);  
  
       //Specify the name of the signature field 
       String fieldName = "SignatureField1"; 
      
       //Create a PKIOptions object that contains PKI run-time options 
       PKIOptions pkiOptions = new PKIOptions();  
       pkiOptions.setVerificationTime(VerificationTime.CURRENT_TIME); 
       pkiOptions.setRevocationCheckStyle(RevocationCheckStyle.BestEffort); 
      
       //Verify the digital signature 
       PDFSignatureVerificationInfo  signInfo = signClient.verify2( 
          inDoc, 
          fieldName, 
          pkiOptions, 
          null); 
  
       //Get the Signature Status 
       SignatureStatus sigStatus = signInfo.getStatus(); 
       String myStatus="";  
      
       //Determine the status of the signature 
       if (sigStatus == SignatureStatus.DynamicFormSignatureUnknown) 
              myStatus = "The signatures located in the dynamic PDF form are unknown"; 
          else if (sigStatus == SignatureStatus.DocumentSignatureUnknown) 
              myStatus = "The signatures located in the PDF document are unknown"; 
          else if (sigStatus == SignatureStatus.CertifiedDynamicFormSignatureTamper) 
              myStatus = "The signatures located in a certified PDF form are valid"; 
          else if (sigStatus == SignatureStatus.SignedDynamicFormSignatureTamper) 
              myStatus = "The signatures located in a signed dynamic PDF form are valid"; 
          else if (sigStatus == SignatureStatus.CertifiedDocumentSignatureTamper) 
              myStatus = "The signatures located in a certified PDF document are valid"; 
          else if (sigStatus == SignatureStatus.SignedDocumentSignatureTamper) 
              myStatus = "The signatures located in a signed PDF document are valid"; 
          else if (sigStatus == SignatureStatus.SignatureFormatError) 
              myStatus = "The format of a signature in a signed document is invalid"; 
          else if (sigStatus == SignatureStatus.DynamicFormSigNoChanges) 
              myStatus = "No changes were made to the signed dynamic PDF form"; 
          else if (sigStatus == SignatureStatus.DocumentSigNoChanges) 
              myStatus = "No changes were made to the signed PDF document"; 
          else if (sigStatus == SignatureStatus.DynamicFormCertificationSigNoChanges) 
              myStatus = "No changes were made to the certified dynamic PDF form"; 
          else if (sigStatus == SignatureStatus.DocumentCertificationSigNoChanges) 
              myStatus = "No changes were made to the certified PDF document"; 
          else if (sigStatus == SignatureStatus.DocSigWithChanges) 
              myStatus = "There were changes to a signed PDF document"; 
         else if (sigStatus == SignatureStatus.CertificationSigWithChanges) 
              myStatus = "There were changes made to the PDF document."; 
                
       //Get the signature type 
       SignatureType sigType = signInfo.getSignatureType(); 
       String myType = ""; 
          
       if (sigType.getType() == PDFSignatureType.AUTHORSIG) 
              myType="Certification"; 
       else if(sigType.getType() == PDFSignatureType.RECIPIENTSIG) 
              myType="Recipient"; 
      
       //Get the identity of the signer 
       IdentityInformation signerId = signInfo.getSigner(); 
       String signerMsg = ""; 
      
      if (signerId.getStatus() == IdentityStatus.UNKNOWN) 
          signerMsg = "Identity Unknown"; 
      else if (signerId.getStatus() == IdentityStatus.TRUSTED) 
          signerMsg = "Identity Trusted"; 
      else if (signerId.getStatus() == IdentityStatus.NOTTRUSTED) 
          signerMsg = "Identity Not Trusted"; 
               
      //Get the Signature properties returned by the Signature service 
      SignatureProperties sigProps = signInfo.getSignatureProps(); 
      String signerName =  sigProps.getSignerName(); 
      
     System.out.println("The status of the signature is: "+myStatus +". The signer identity is "+signerMsg +". The signature type is "+myType +". The name of the signer is "+signerName+"."); 
     } 
     catch (Exception ee) 
     { 
         ee.printStackTrace(); 
     } 
      } 
 } 
  
 

クイックスタート(SOAPモード):Java APIを使用した複数の電子署名の検証

次のJavaコードの例では、LoanAllSigs.pdfという名前のPDFファイルに基づいた、署名済みPDFドキュメント内にある複数の電子署名を検証します。 検証時間は現在時刻に設定され、失効確認オプションはベストエフォートに設定されます。 (複数のデジタル署名の検証を参照)。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
     * 4. adobe-utilities.jar 
     * 5. jboss-client.jar (use a different JAR file if the forms server is not deployed 
     * on JBoss) 
     * 6. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
 import java.util.*; 
 import java.io.FileInputStream; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.livecycle.signatures.client.types.*; 
 import com.adobe.livecycle.signatures.pki.client.types.common.RevocationCheckStyle; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
  
 public class VerifyAllSignaturesSOAP{ 
  
     public static void main(String[] args) { 
          
     try 
     { 
       //Set connection properties required to invoke AEM Forms using SOAP mode                                 
       Properties connectionProps = new Properties(); 
       connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
      connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
       connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
       connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
       connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
          
       //Create a ServiceClientFactory instance 
       ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
       //Create a SignatureServiceClient object 
       SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
      
       //Specify a PDF document that contains multiple digital signatures 
       FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanAllSigs.pdf");     
       Document inDoc = new Document (fileInputStream);  
      
       //Create a PKIOptions object that contains PKI run-time options 
       PKIOptions pkiOptions = new PKIOptions();  
       pkiOptions.setVerificationTime(VerificationTime.CURRENT_TIME); 
       pkiOptions.setRevocationCheckStyle(RevocationCheckStyle.BestEffort); 
      
       //Verify all digital signatures that are located in a PDF document 
       PDFDocumentVerificationInfo  allSig = signClient.verifyPDFDocument( 
          inDoc, 
          pkiOptions, 
          null); 
  
       //Get a list of all signatures that are located in the PDF document 
       List allSignatures = allSig.getVerificationInfos(); 
      
     //Create an Iterator object and iterate through  
     //the List object 
     Iterator<PDFSignatureVerificationInfo> iter = allSignatures.iterator();  
      
     while (iter.hasNext()) {  
            PDFSignatureVerificationInfo signInfo = (PDFSignatureVerificationInfo)iter.next();  
              
            //Get the Signature Status 
               SignatureStatus sigStatus = signInfo.getStatus(); 
               String myStatus="";  
              
             //Determine the status of the signature 
               if (sigStatus == SignatureStatus.DynamicFormSignatureUnknown) 
                   myStatus = "The signatures located in the dynamic PDF form are unknown"; 
               else if (sigStatus == SignatureStatus.DocumentSignatureUnknown) 
                   myStatus = "The signatures located in the PDF document are unknown"; 
               else if (sigStatus == SignatureStatus.CertifiedDynamicFormSignatureTamper) 
                   myStatus = "The signatures located in a certified PDF form are valid"; 
               else if (sigStatus == SignatureStatus.SignedDynamicFormSignatureTamper) 
                   myStatus = "The signatures located in a signed dynamic PDF form are valid"; 
               else if (sigStatus == SignatureStatus.CertifiedDocumentSignatureTamper) 
                   myStatus = "The signatures located in a certified PDF document are valid"; 
               else if (sigStatus == SignatureStatus.SignedDocumentSignatureTamper) 
                   myStatus = "The signatures located in a signed PDF document are valid"; 
               else if (sigStatus == SignatureStatus.SignatureFormatError) 
                   myStatus = "The format of a signature in a signed document is invalid"; 
               else if (sigStatus == SignatureStatus.DynamicFormSigNoChanges) 
                   myStatus = "No changes were made to the signed dynamic PDF form"; 
               else if (sigStatus == SignatureStatus.DocumentSigNoChanges) 
                   myStatus = "No changes were made to the signed PDF document"; 
               else if (sigStatus == SignatureStatus.DynamicFormCertificationSigNoChanges) 
                   myStatus = "No changes were made to the certified dynamic PDF form"; 
               else if (sigStatus == SignatureStatus.DocumentCertificationSigNoChanges) 
                   myStatus = "No changes were made to the certified PDF document"; 
               else if (sigStatus == SignatureStatus.DocSigWithChanges) 
                   myStatus = "There were changes to a signed PDF document"; 
              else if (sigStatus == SignatureStatus.CertificationSigWithChanges) 
                   myStatus = "There were changes made to the PDF document."; 
                   
               //Get the signature type 
              SignatureType sigType = signInfo.getSignatureType(); 
              String myType = ""; 
              
              if (sigType.getType() == PDFSignatureType.AUTHORSIG) 
                  myType="Certification"; 
              else if(sigType.getType() == PDFSignatureType.RECIPIENTSIG) 
                  myType="Recipient"; 
                           
              //Get the Signature properties returned by the Signature service 
              SignatureProperties sigProps = signInfo.getSignatureProps(); 
              String signerName =  sigProps.getSignerName(); 
              
             System.out.println("The status of the signature is: "+myStatus +". The signature type is "+myType +". The name of the signer is "+signerName+"."); 
         } 
     } 
     catch (Exception ee) 
     { 
         ee.printStackTrace(); 
     } 
      } 
 }

クイックスタート(SOAPモード):Java APIを使用した電子署名の削除

次のJavaコードの例では、SignatureField1​という名前の署名フィールドから電子署名を削除します。 署名フィールドを含むPDFファイルの名前は​LoanSigned.pdf​です。 (Digital Signaturesの削除を参照)。

 /* 
     * This Java Quick Start uses the SOAP mode and contains the following JAR files 
     * in the class path: 
     * 1. adobe-signatures-client.jar 
     * 2. adobe-livecycle-client.jar 
     * 3. adobe-usermanager-client.jar 
     * 4. adobe-utilities.jar 
     * 5. jboss-client.jar (use a different JAR file if the forms server is not deployed 
     * on JBoss) 
     * 6. activation.jar (required for SOAP mode) 
     * 7. axis.jar (required for SOAP mode) 
     * 8. commons-codec-1.3.jar (required for SOAP mode) 
     * 9.  commons-collections-3.1.jar  (required for SOAP mode) 
     * 10. commons-discovery.jar (required for SOAP mode) 
     * 11. commons-logging.jar (required for SOAP mode) 
     * 12. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
     * 13. jaxen-1.1-beta-9.jar (required for SOAP mode) 
     * 14. jaxrpc.jar (required for SOAP mode) 
     * 15. log4j.jar (required for SOAP mode) 
     * 16. mail.jar (required for SOAP mode) 
     * 17. saaj.jar (required for SOAP mode) 
     * 18. wsdl4j.jar (required for SOAP mode) 
     * 19. xalan.jar (required for SOAP mode) 
     * 20. xbean.jar (required for SOAP mode) 
     * 21. xercesImpl.jar (required for SOAP mode) 
     * 
     * These JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/common 
     * 
     * The adobe-utilities.jar file is located in the following path: 
     * <install directory>/sdk/client-libs/jboss 
     * 
     * The jboss-client.jar file is located in the following path: 
     * <install directory>/jboss/bin/client 
     * 
     * SOAP required JAR files are located in the following path: 
     * <install directory>/sdk/client-libs/thirdparty 
     * 
     * If you want to invoke a remote forms server instance and there is a 
     * firewall between the client application and the server, then it is  
     * recommended that you use the SOAP mode. When using the SOAP mode,  
     * you have to include these additional JAR files 
     * 
     * For information about the SOAP  
     * mode, see "Setting connection properties" in Programming  
     * with AEM Forms 
     */ 
  
 import java.util.*; 
 import java.io.File; 
 import java.io.FileInputStream; 
 import com.adobe.livecycle.signatures.client.*; 
 import com.adobe.idp.Document; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
 import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
      
 public class ClearSignatureFieldSOAP { 
  
     public static void main(String[] args) { 
          
     try 
     { 
         //Set connection properties required to invoke AEM Forms using SOAP mode                                 
         Properties connectionProps = new Properties(); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://[server]:[port]"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
         connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
          
         //Create a ServiceClientFactory instance 
         ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
  
         //Create a SignatureServiceClient object 
         SignatureServiceClient signClient = new SignatureServiceClient(myFactory); 
          
         //Specify a PDF document that contains the signature to remove  
         FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\LoanSigned.pdf");     
         Document inDoc = new Document (fileInputStream); 
      
         //Specify the name of the signature field 
         String fieldName = "SignatureField1"; 
  
         //Clear the signature field 
         Document outPDF = signClient.clearSignatureField(inDoc,fieldName); 
  
         //Save the PDF document                     
         File outFile = new File("C:\\Adobe\Loan.pdf"); 
         outPDF.copyToFile(outFile); 
         } 
  
     catch (Exception ee) 
         { 
         ee.printStackTrace(); 
         } 
     } 
 } 
  
  
 

このページ