Поддерживает ли pdfbox подписывание во время выполнения после создания и защиты pdf. В настоящее время я успешно загружаюсь из файловой системы и выполняю это.
Я пытаюсь подписать защищенный pdf на лету и вернуть полученный документ, не сохраняя его снова, не используя механизм сохранения pdf в течение всего процесса.
public byte[] attachPdf(){
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PDDocument doc = sign(generatedPdf());//generated pdf
doc.save(byteArrayOutputStream);
response = new ResponseEntity<>(byteArrayOutputStream.toByteArray(), headers, HttpStatus.OK);
doc.close();
}
public PDDocument sign(PDDocument doc1){
//FileOutputStream fos = new FileOutputStream(signFile);
//PDDocument doc = PDDocument.load(inputFile, "*******");
//doc.setAllSecurityToBeRemoved(true);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
doc1.save(byteArrayOutputStream);
PDDocument doc = PDDocument.load(byteArrayOutputStream.toByteArray());
int accessPermissions = SigUtils.getMDPPermission(doc);
PDSignature signature = null;
PDRectangle rect = null;
if (signature == null)
{
// create signature dictionary
signature = new PDSignature();
}
if (rect == null)
{
rect = createSignatureRectangle(doc, humanRect);
}
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
signature.setName("test");
signature.setLocation("testL");
signature.setReason("testR");
signature.setSignDate(Calendar.getInstance());
SignatureInterface signatureInterface = isExternalSigning() ? null : this;
signatureOptions = new SignatureOptions();
signatureOptions.setVisualSignature(createVisualSignatureTemplate(doc, doc.getNumberOfPages()-1, rect, signature));
signatureOptions.setPage(doc.getNumberOfPages()-1);
doc.addSignature(signature, signatureInterface, signatureOptions);
//doc.save(baos);
//doc.saveIncremental(fos);
//IOUtils.closeQuietly(signatureOptions);
return doc;
}