CertificateFactory cf = CertificateFactory.getInstance("X.509");
PDDocument doc = PDDocument.load(input);
PublicKeyProtectionPolicy ppp = new PublicKeyProtectionPolicy();
PublicKeyRecipient recip1 = new PublicKeyRecipient();
PublicKeyRecipient recip2 = new PublicKeyRecipient();
recip1.setPermission(accessPermission);
recip2.setPermission(accessPermission2);
InputStream inStream = new FileInputStream(publicCert1);
Assert.assertNotNull(cf);
X509Certificate certificate1 = (X509Certificate)cf.generateCertificate(inStream);
inStream.close();
InputStream inStream2 = new FileInputStream(publicCert2);
Assert.assertNotNull(cf);
X509Certificate certificate2 = (X509Certificate)cf.generateCertificate(inStream2);
inStream.close();
recip1.setX509(certificate1);
recip2.setX509(certificate2);
ppp.addRecipient(recip1);
ppp.addRecipient(recip2);
doc.protect(ppp);
doc.save(output.getAbsolutePath());
doc.close();