Class PdfEncryptor


  • public final class PdfEncryptor
    extends java.lang.Object
    This class takes any PDF and returns exactly the same but encrypted. All the content, links, outlines, etc, are kept. It is also possible to change the info dictionary.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private PdfEncryptor()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void encrypt​(PdfReader reader, java.io.OutputStream os, boolean strength, java.lang.String userPassword, java.lang.String ownerPassword, int permissions)
      Entry point to encrypt a PDF document.
      static void encrypt​(PdfReader reader, java.io.OutputStream os, boolean strength, java.lang.String userPassword, java.lang.String ownerPassword, int permissions, java.util.HashMap<java.lang.String,​java.lang.String> newInfo)
      Entry point to encrypt a PDF document.
      static void encrypt​(PdfReader reader, java.io.OutputStream os, byte[] userPassword, byte[] ownerPassword, int permissions, boolean strength128Bits)
      Entry point to encrypt a PDF document.
      static void encrypt​(PdfReader reader, java.io.OutputStream os, byte[] userPassword, byte[] ownerPassword, int permissions, boolean strength128Bits, java.util.HashMap<java.lang.String,​java.lang.String> newInfo)
      Entry point to encrypt a PDF document.
      static void encrypt​(PdfReader reader, java.io.OutputStream os, int type, java.lang.String userPassword, java.lang.String ownerPassword, int permissions)
      Entry point to encrypt a PDF document.
      static void encrypt​(PdfReader reader, java.io.OutputStream os, int type, java.lang.String userPassword, java.lang.String ownerPassword, int permissions, java.util.HashMap<java.lang.String,​java.lang.String> newInfo)
      Entry point to encrypt a PDF document.
      static byte[] getContent​(org.bouncycastle.cms.RecipientInformation recipientInfo, java.security.PrivateKey certificateKey, java.lang.String certificateKeyProvider)
      Gets the content from a recipient.
      static java.lang.String getPermissionsVerbose​(int permissions)
      Give you a verbose analysis of the permissions.
      static boolean isAssemblyAllowed​(int permissions)
      Tells you if document assembly is allowed.
      static boolean isCopyAllowed​(int permissions)
      Tells you if copying is allowed.
      static boolean isDegradedPrintingAllowed​(int permissions)
      Tells you if degraded printing is allowed.
      static boolean isFillInAllowed​(int permissions)
      Tells you if filling in fields is allowed.
      static boolean isModifyAnnotationsAllowed​(int permissions)
      Tells you if modifying annotations is allowed.
      static boolean isModifyContentsAllowed​(int permissions)
      Tells you if modifying content is allowed.
      static boolean isPrintingAllowed​(int permissions)
      Tells you if printing is allowed.
      static boolean isScreenReadersAllowed​(int permissions)
      Tells you if repurposing for screenreaders is allowed.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PdfEncryptor

        private PdfEncryptor()
    • Method Detail

      • encrypt

        public static void encrypt​(PdfReader reader,
                                   java.io.OutputStream os,
                                   byte[] userPassword,
                                   byte[] ownerPassword,
                                   int permissions,
                                   boolean strength128Bits)
                            throws DocumentException,
                                   java.io.IOException
        Entry point to encrypt a PDF document. The encryption parameters are the same as in PdfWriter. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        reader - the read PDF
        os - the output destination
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        strength128Bits - true for 128 bit key length, false for 40 bit key length
        Throws:
        DocumentException - on error
        java.io.IOException - on error
      • encrypt

        public static void encrypt​(PdfReader reader,
                                   java.io.OutputStream os,
                                   byte[] userPassword,
                                   byte[] ownerPassword,
                                   int permissions,
                                   boolean strength128Bits,
                                   java.util.HashMap<java.lang.String,​java.lang.String> newInfo)
                            throws DocumentException,
                                   java.io.IOException
        Entry point to encrypt a PDF document. The encryption parameters are the same as in PdfWriter. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        reader - the read PDF
        os - the output destination
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        strength128Bits - true for 128 bit key length, false for 40 bit key length
        newInfo - an optional String map to add or change the info dictionary. Entries with null values delete the key in the original info dictionary
        Throws:
        DocumentException - on error
        java.io.IOException - on error
        Since:
        5.0.1 (generic type in signature)
      • encrypt

        public static void encrypt​(PdfReader reader,
                                   java.io.OutputStream os,
                                   boolean strength,
                                   java.lang.String userPassword,
                                   java.lang.String ownerPassword,
                                   int permissions)
                            throws DocumentException,
                                   java.io.IOException
        Entry point to encrypt a PDF document. The encryption parameters are the same as in PdfWriter. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        reader - the read PDF
        os - the output destination
        strength - true for 128 bit key length, false for 40 bit key length
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        Throws:
        DocumentException - on error
        java.io.IOException - on error
      • encrypt

        public static void encrypt​(PdfReader reader,
                                   java.io.OutputStream os,
                                   boolean strength,
                                   java.lang.String userPassword,
                                   java.lang.String ownerPassword,
                                   int permissions,
                                   java.util.HashMap<java.lang.String,​java.lang.String> newInfo)
                            throws DocumentException,
                                   java.io.IOException
        Entry point to encrypt a PDF document. The encryption parameters are the same as in PdfWriter. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        reader - the read PDF
        os - the output destination
        strength - true for 128 bit key length, false for 40 bit key length
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        newInfo - an optional String map to add or change the info dictionary. Entries with null values delete the key in the original info dictionary
        Throws:
        DocumentException - on error
        java.io.IOException - on error
        Since:
        5.0.1 (generic type in signature)
      • encrypt

        public static void encrypt​(PdfReader reader,
                                   java.io.OutputStream os,
                                   int type,
                                   java.lang.String userPassword,
                                   java.lang.String ownerPassword,
                                   int permissions,
                                   java.util.HashMap<java.lang.String,​java.lang.String> newInfo)
                            throws DocumentException,
                                   java.io.IOException
        Entry point to encrypt a PDF document. The encryption parameters are the same as in PdfWriter. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        reader - the read PDF
        os - the output destination
        type - the type of encryption. It can be one of STANDARD_ENCRYPTION_40, STANDARD_ENCRYPTION_128 or ENCRYPTION_AES128. Optionally DO_NOT_ENCRYPT_METADATA can be ored to output the metadata in cleartext
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        newInfo - an optional String map to add or change the info dictionary. Entries with null values delete the key in the original info dictionary
        Throws:
        DocumentException - on error
        java.io.IOException - on error
        Since:
        5.0.1 (generic type in signature)
      • encrypt

        public static void encrypt​(PdfReader reader,
                                   java.io.OutputStream os,
                                   int type,
                                   java.lang.String userPassword,
                                   java.lang.String ownerPassword,
                                   int permissions)
                            throws DocumentException,
                                   java.io.IOException
        Entry point to encrypt a PDF document. The encryption parameters are the same as in PdfWriter. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        reader - the read PDF
        os - the output destination
        type - the type of encryption. It can be one of STANDARD_ENCRYPTION_40, STANDARD_ENCRYPTION_128 or ENCRYPTION_AES128. Optionally DO_NOT_ENCRYPT_METADATA can be ored to output the metadata in cleartext
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions values delete the key in the original info dictionary
        Throws:
        DocumentException - on error
        java.io.IOException - on error
      • getPermissionsVerbose

        public static java.lang.String getPermissionsVerbose​(int permissions)
        Give you a verbose analysis of the permissions.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        a String that explains the meaning of the permissions value
      • isPrintingAllowed

        public static boolean isPrintingAllowed​(int permissions)
        Tells you if printing is allowed.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        true if printing is allowed
        Since:
        2.0.7
      • isModifyContentsAllowed

        public static boolean isModifyContentsAllowed​(int permissions)
        Tells you if modifying content is allowed.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        true if modifying content is allowed
        Since:
        2.0.7
      • isCopyAllowed

        public static boolean isCopyAllowed​(int permissions)
        Tells you if copying is allowed.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        true if copying is allowed
        Since:
        2.0.7
      • isModifyAnnotationsAllowed

        public static boolean isModifyAnnotationsAllowed​(int permissions)
        Tells you if modifying annotations is allowed.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        true if modifying annotations is allowed
        Since:
        2.0.7
      • isFillInAllowed

        public static boolean isFillInAllowed​(int permissions)
        Tells you if filling in fields is allowed.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        true if filling in fields is allowed
        Since:
        2.0.7
      • isScreenReadersAllowed

        public static boolean isScreenReadersAllowed​(int permissions)
        Tells you if repurposing for screenreaders is allowed.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        true if repurposing for screenreaders is allowed
        Since:
        2.0.7
      • isAssemblyAllowed

        public static boolean isAssemblyAllowed​(int permissions)
        Tells you if document assembly is allowed.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        true if document assembly is allowed
        Since:
        2.0.7
      • isDegradedPrintingAllowed

        public static boolean isDegradedPrintingAllowed​(int permissions)
        Tells you if degraded printing is allowed.
        Parameters:
        permissions - the permissions value of a PDF file
        Returns:
        true if degraded printing is allowed
        Since:
        2.0.7
      • getContent

        public static byte[] getContent​(org.bouncycastle.cms.RecipientInformation recipientInfo,
                                        java.security.PrivateKey certificateKey,
                                        java.lang.String certificateKeyProvider)
                                 throws org.bouncycastle.cms.CMSException
        Gets the content from a recipient.
        Parameters:
        recipientInfo -
        certificateKey -
        certificateKeyProvider -
        Returns:
        Throws:
        org.bouncycastle.cms.CMSException