Я создал отчет, содержащий 3 страницы с помощью iReport. Теперь подпись появляется только на одной странице. Но мне нужно подписать каждую страницу с помощью iText.Цифровая подпись на каждой странице с помощью iText
PdfReader reader = new PdfReader(fullFilePath);
String outputPath = reportPath + randomUUID + fileExtension;
FileOutputStream fout = new FileOutputStream(outputPath);
stp = PdfStamper.createSignature(reader, fout, '\0', null, true);
PdfSignatureAppearance sap = stp.getSignatureAppearance();
sap.setCrypto(key, chain, null,PdfSignatureAppearance.SELF_SIGNED);
sap.setReason("test");
sap.setLocation("test");
String imagePath = servletContextPath + "/resources/img/signature.png";
File file = new File(imagePath);
byte[] imageByte = new byte[(int) file.length()];
try (FileInputStream fileInputStream = new FileInputStream(file)) {
fileInputStream.read(imageByte);
Image image = Image.getInstance(imageByte);
sap.setImage(image);
}
// comment next line to have an invisible signature
for (int page = 1; page <= reader.getNumberOfPages(); page++){
sap.setVisibleSignature(signatureRectangle, page, null);
}
Вам нужна одна подпись на странице или одна глобальная подпись с визуализацией на каждой странице? – mkl
одна глобальная подпись с визуализацией на каждой странице. – ziha
Cf. Мой ответ, что невозможно с iText как есть (можно, конечно, расширить iText). Кроме того, юридическая ценность таких подписей с множественными визуализациями сомнительна, и зрители в формате PDF могут, таким образом, начать отказываться от таких подписей в будущем. – mkl