Hello I've managed to somehow hardcode the security settings:
On Mon, Jul 27, 2015 at 2:23 PM, Roberto Nibali <[email protected]> wrote: > Hi > > I'm trying to replicate the document security settings using PDFBox and > can't seem to get it working at all. This is the code I use: > > private static PDDocument srcDoc; > private static PDDocument tplDoc; > > @Test > public static void SimpleTest() throws IOException { > String ownerPassword = "12345"; > srcDoc = PDDocument.load(new File("./ccalt.pdf"), ownerPassword); > tplDoc = PDDocument.load(new File("./cctemp.pdf"), ownerPassword); > tplDoc.setAllSecurityToBeRemoved(true); > applyDocPermissions(ownerPassword, ""); > srcDoc.close(); > tplDoc.getDocumentCatalog().getAcroForm().setNeedAppearances(true); > tplDoc.save("ccmig.pdf"); > tplDoc.close(); > } > public static void applyDocPermissions(String ownerPassword, String > userPassword) throws IOException { > int encKeyLen; > AccessPermission srcDocAP = srcDoc.getCurrentAccessPermission(); > AccessPermission destDocAP = new AccessPermission(); > destDocAP.setCanAssembleDocument(srcDocAP.canAssembleDocument()); > destDocAP.setCanExtractContent(srcDocAP.canExtractContent()); > > destDocAP.setCanExtractForAccessibility(srcDocAP.canExtractForAccessibility()); > destDocAP.setCanFillInForm(srcDocAP.canFillInForm()); > destDocAP.setCanModify(srcDocAP.canModify()); > destDocAP.setCanModifyAnnotations(srcDocAP.canModifyAnnotations()); > destDocAP.setCanPrint(srcDocAP.canPrint()); > destDocAP.setCanPrintDegraded(srcDocAP.canPrintDegraded()); > StandardProtectionPolicy policy = new > StandardProtectionPolicy(ownerPassword, userPassword, destDocAP); > encKeyLen = srcDoc.getEncryption().getLength(); > policy.setEncryptionKeyLength(encKeyLen); > tplDoc.setAllSecurityToBeRemoved(false); > tplDoc.protect(policy); > } > > Using the following function, it works: public static void applyDocPermissionsHardcoded(String ownerPassword, String userPassword) throws IOException { int encKeyLen; AccessPermission srcDocAP = srcDoc.getCurrentAccessPermission(); AccessPermission destDocAP = new AccessPermission(); destDocAP.setCanPrint(true); //destDocAP.setCanPrintDegraded(false); destDocAP.setCanModify(false); destDocAP.setCanAssembleDocument(false); destDocAP.setCanExtractContent(false); destDocAP.setCanExtractForAccessibility(true); //Page Extraction = false destDocAP.setCanModifyAnnotations(false); destDocAP.setCanFillInForm(true); //Signing = true //Creation of Template Pages = true StandardProtectionPolicy policy = new StandardProtectionPolicy(ownerPassword, userPassword, destDocAP); encKeyLen = srcDoc.getEncryption().getLength(); policy.setEncryptionKeyLength(encKeyLen); tplDoc.setAllSecurityToBeRemoved(false); tplDoc.protect(policy); } Let's hope all documents I need to migrate have the same security settings. For now, this issue does not need to be looked at anymore. What's funny is that using PDFBox, I cannot modify the page extraction, signing or the creation of template pages bits in the security settings. Is this missing in the implementation? Cheers Roberto

