PDF BOX 2.0.32<-> 3.0.2 Проблема с многосторонней подписью . Первая подпись признана недействительной [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 PDF BOX 2.0.32<-> 3.0.2 Проблема с многосторонней подписью . Первая подпись признана недействительной [закрыто]

Сообщение Anonymous »

В настоящее время у нас есть вариант использования, когда документ должен быть подписан несколькими поставщиками.
Проблема возникает, когда вторая сторона подписывает, мы загружаем документ в формате Adobe PDF и обнаруживаем, что первая подпись недействительна.
Метод подписи:-

Код: Выделить всё

private byte[] fillAllSignatures(RecipientSignRequest.SignatureParams sigParams, byte[] interimPdf, Date signDate) throws IOException {
while (true) {
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
SignatureOptions signatureOptions = null;

try (PDDocument doc = Loader.loadPDF(interimPdf)) {
PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();
// Step 1: Find unfilled signature fields
List
 signatures = PdfUtils.findUnfilledSignatureFieldsForRecipient(doc, sigParams.getSignatureFields());
acroForm.setAppendOnly(true);
// Break if no more unfilled signatures are found
if (signatures.isEmpty()) {
break;
}

// Step 2: Set MDP Permissions (allow form filling but no other changes)
int accessPermissions = SigUtils.getMDPPermission(doc);
for (PDSignature signature : signatures) {
if (accessPermissions == 0) {
acroForm.setSignaturesExist(false);
SigUtils.setMDPPermission(doc, signature, 2); // Allow form filling and signing
}else{
acroForm.setSignaturesExist(true);
}
// Step 3: Set signature properties
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
visibleSignatureProperties.buildSignature();  // Prepare visual signature
signature.setName(visibleSignatureProperties.getSignerName());
signature.setLocation(visibleSignatureProperties.getSignerLocation());
signature.setReason(visibleSignatureProperties.getSignatureReason());

Calendar calendar = Calendar.getInstance();
calendar.setTime(signDate);
signature.setSignDate(calendar);

// Step 4: Add visual signature to the document
signatureOptions = new SignatureOptions();
signatureOptions.setVisualSignature(visibleSignatureProperties.getVisibleSignature());
signatureOptions.setPage(visibleSignatureProperties.getPage() - 1);
doc.addSignature(signature, this, signatureOptions);
}

// Step 5: Save document incrementally to preserve previous changes
doc.saveIncremental(outputStream);
interimPdf = outputStream.toByteArray();

// If all signatures have been filled, break the loop
if (signatures.size() 

Подробнее здесь: [url]https://stackoverflow.com/questions/79057231/pdf-box-2-0-32-3-0-2-issue-with-multi-party-signature-first-signature-inval[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»