Quick Start (EJB mode): Setting the save style for a PDF document using the Java API

The following code example sets the save mode for fast web viewing and then passes the PDF document to the Encryption service where it is encrypted. The encrypted PDF document that is saved for fast web viewing is saved as a PDF file named FastWebViewLoan.pdf. (See Setting PDF Document Save Modes.)

/* 
    * This Java Quick Start uses the EJB mode and contains the following JAR files 
    * in the class path: 
    * 1. adobe-pdfutility-client.jar 
    * 2. adobe-livecycle-client.jar 
    * 3. adobe-usermanager-client.jar 
    * 4. adobe-utilities.jar 
    * 5. jbossall-client.jar (use a different JAR file if the LiveCycle Server is not deployed 
    * on JBoss) 
    * 6. jacorb.jar (use a different JAR file if the LiveCycle Server is not deployed on JBoss) 
    * 7. jnp-client.jar (use a different JAR file if the LiveCycle Server is not deployed on JBoss) 
    *  
    *  The JBoss files must be kept in the jboss\client folder. You can copy the client folder to  
    *  your local development environment and then include the 3 JBoss JAR files in your class path 
    *   
    *  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 jbossall-client.jar file is located in the following path: 
    * <install directory>/jboss/client 
    *  
    * If you want to invoke a remote LiveCycle 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 additional JAR files located in the following  
    * path 
    * <install directory>/sdk/client-libs/thirdparty 
    *  
    * For information about the SOAP  
    * mode and the additional JAR files that need to be included,  
    * see "Setting connection properties" in Programming  
    * with LiveCycle 
    *  
    * For complete details about the location of the LiveCycle JAR files,  
    * see "Including LiveCycle Java library files" in Programming  
    * with LiveCycle 
    */ 
import com.adobe.livecycle.encryption.client.EncryptionServiceClient; 
import com.adobe.livecycle.encryption.client.PasswordEncryptionCompatability; 
import com.adobe.livecycle.encryption.client.PasswordEncryptionOption; 
import com.adobe.livecycle.encryption.client.PasswordEncryptionOptionSpec; 
import com.adobe.livecycle.encryption.client.PasswordEncryptionPermission; 
import com.adobe.livecycle.pdfutility.client.*; 
import java.util.*; 
import java.io.*; 
import com.adobe.idp.Document; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
 
public class SaveDocument 
{ 
    public static void main(String[] args) 
    { 
        try 
        { 
            //Set connection properties required to invoke LiveCycle                                 
            Properties connectionProps = new Properties(); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://localhost:1099"); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_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 object 
            ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
             
            // Create a PDF Utility client 
            PDFUtilityServiceClient pdfUt = new PDFUtilityServiceClient(myFactory); 
 
            // Specify a document to be saved 
            FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan.pdf"); 
            Document inDoc = new Document(fileInputStream); 
 
            // Specify the save option 
            PDFUtilitySaveMode saveMode = new PDFUtilitySaveMode(); 
            saveMode.setSaveStyle("FAST_WEB_VIEW"); 
            Document outFastWebView = pdfUt.setSaveMode(inDoc, saveMode, true); 
             
            //Pass the document that is saved as 'Fast 
            //Web View'  to the Encryption service 
            EncryptionServiceClient encryptClient = new EncryptionServiceClient(myFactory);   
             
            //Create a PasswordEncryptionOptionSpec object that  
            //stores encryption run-time values 
            PasswordEncryptionOptionSpec passSpec = new PasswordEncryptionOptionSpec(); 
             
            //Specify the PDF document resource to encrypt 
            passSpec.setEncryptOption(PasswordEncryptionOption.ALL); 
             
            //Specify the permission associated with the password 
            List encrypPermissions = new ArrayList();  
            encrypPermissions.add(PasswordEncryptionPermission.PASSWORD_EDIT_EXTRACT); 
            encrypPermissions.add(PasswordEncryptionPermission.PASSWORD_EDIT_FORM_FILL); 
            passSpec.setPermissionsRequested(encrypPermissions); 
             
            //Specify the Acrobat version 
            passSpec.setCompatability(PasswordEncryptionCompatability.ACRO_7); 
             
            //Specify the password values 
            passSpec.setDocumentOpenPassword("OpenPassword"); 
            passSpec.setPermissionPassword("PermissionPassword"); 
             
            //Encrypt the PDF document 
            Document encryptDoc = encryptClient.encryptPDFUsingPassword(inDoc,passSpec);  
             
            //Save the encrypted document that is saved as FAST_WEB_VIEW 
            //as a PDF file named FastWebViewLoan.pdf 
            File pdfFile = new File("C:\\Adobe\FastWebViewLoan.pdf"); 
            encryptDoc.copyToFile(pdfFile); 
             
            // Inspect the document?s save option 
            PDFUtilitySaveMode verifySaveMode = pdfUt.getSaveMode(outFastWebView); 
            String verifySaveStyle = verifySaveMode.getSaveStyle(); 
            System.out.println("The save mode is " + verifySaveStyle); 
        } 
        catch (Exception e) 
        { 
            System.out.println("Error occurred: " + e.getMessage()); 
        } 
    } 
}