Aspose pdf java PdfFileSignature setAuthority не работает

#java #pdf #digital-signature #aspose

#java #PDF #цифровая подпись #aspose

Вопрос:

Я пытаюсь использовать Aspose pdf java для цифровой подписи документа. Это мой код

 public ByteArrayOutputStream signDocument(Document doc, String signedBy) throws Exception {

        PdfFileSignature pdfSignSingle = new PdfFileSignature();
        pdfSignSingle.bindPdf(doc);
        pdfSignSingle.setCertificate(prop.getSigningKeyStorePath(), prop.getKeystorePassword());
        PKCS7 signature = new PKCS7(prop.getSigningKeyStorePath(), prop.getKeystorePassword());
        pdfSignSingle.setSignatureAppearance(prop.getSimploudLogo());

        signature.setAuthority("Authority");
        signature.setDate(new Date());
        signature.setContactInfo("email");
        signature.setLocation("Location");
        signature.setReason("reason");
        pdfSignSingle.sign(1, true, new java.awt.Rectangle(100, 100, 200, 200), signature);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        pdfSignSingle.save(baos);
        pdfSignSingle.dispose();
        doc.dispose();
        return baos;
    }
  

На рисунке показано, как подпись выглядит в AdobeReader.

изображение

Как вы можете видеть, изображение и полномочия не отображаются. Я попробовал изображение как в формате PDF, так и в формате png. Я также попытался сделать его меньше, чем площадь прямоугольника. Что касается полномочий, мне действительно нужно, чтобы они были настраиваемыми, чтобы текст в первой строке на картинке мог быть подписан «customParameter»

Комментарии:

1. Мы считаем, что мы ответили на ваш аналогичный запрос в Aspose. Официальный форум поддержки PDF ( forum.aspose.com/t /… ). Мы просим вас следить за этим, чтобы мы могли оказать вам соответствующую помощь. Это Асад Али, и я работаю евангелистом-разработчиком в Aspose.

Ответ №1:

API предлагает другой класс SignatureCustomAppearance , т.Е. Который в дальнейшем может использоваться для установки таких свойств для подписи, таких как DateSigned, Причина, местоположение и т.д. Пожалуйста, проверьте следующий полный фрагмент кода, который может соответствовать вашим требованиям:

 String inputFile = "doc.pdf";
String outSignedFile = "out_20.9.pdf";
// Create PdfFileSignature instance
com.aspose.pdf.facades.PdfFileSignature pdfSignSingle = new com.aspose.pdf.facades.PdfFileSignature();
// Bind the source PDF by reading contents of Stream
pdfSignSingle.bindPdf(inputFile);

PKCS7 pkcs = new PKCS7("mykey2.pfx", "pass");
pkcs.setAuthority("Authority");
pkcs.setDate(new Date());
pkcs.setContactInfo("email");
pkcs.setLocation("Location");
pkcs.setReason("reason");
pkcs.setImage(new FileInputStream("simpleLogo.png"));

SignatureCustomAppearance sca = new SignatureCustomAppearance();
sca.setDateSignedAtLabel(null);
sca.setDigitalSignedLabel(null);
sca.setShowReason(true);
sca.setShowLocation(true);
sca.setShowContactInfo(true);

pkcs.setCustomAppearance(sca);

pdfSignSingle.sign(1, true, new java.awt.Rectangle(100, 100, 200, 200), pkcs);
// Set image for signature appearance
//pdfSignSingle.setSignatureAppearance("simpleLogo.png");
// Save final output
pdfSignSingle.save(outSignedFile);
  

Как упоминалось в комментарии под вопросом, тот же запрос был опубликован в Aspose.Официальный форум PDF также находится на «Aspose pdf java PdfFileSignature setAuthority не работает«, и там также было предоставлено решение.