Я использую IText 5.5.5 для Java, и я хотел бы создать подписанный PDF с внешней подписью следующим образом:IText Java Подписание PDF DocumentException: Не хватает мест
Возьмите PDF документ, который должен быть подписан и создать PDF с пустой подписью и обеспечить кодировкой Base64 байт должен быть подписан внешним механизмом подписи:
PdfReader reader = new PdfReader(src);
FileOutputStream os = new FileOutputStream(dest);
PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0');
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setVisibleSignature(new Rectangle(36, 748, 144, 780), 1, "test");
appearance.setCertificate(chain[1]);
ExternalSignatureContainer external = new ExternalBlankSignatureContainer(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED);
MakeSignature.signExternalContainer(appearance, external, 8192);
InputStream is = appearance.getRangeStream();
byte[] toSign = getBytes(is);
this.b64String = new String(Base64.encode(toSign));
b64String
Знак с внешним механизмом подписи обеспечивая подпись, как PKCS # 7 подписал данные в base64.
Создать ExternalSignatureContainer
иметь только PKCS # 7 подписали данные от внешнего механизма подписания:
public class MyExternalSignatureContainer implements ExternalSignatureContainer {
protected byte[] sig;
public MyExternalSignatureContainer(byte[] sig) {
this.sig = sig;
}
@Override
public void modifySigningDictionary(PdfDictionary arg0) {
}
@Override
public byte[] sign(InputStream arg0) throws GeneralSecurityException {
return sig;
}
}
Создать подписанный PDF документ с MyExternalSignatureContainer:
PdfReader reader = new PdfReader(dest);
FileOutputStream os = new FileOutputStream(signedpdf);
ExternalSignatureContainer external = new MyExternalSignatureContainer(signedData);
MakeSignature.signDeferred(reader, "test", os, external);
Но я на последней строке MakeSignature.signDeferred(reader, "test", os, external);
в следующее исключение:
com.itextpdf.text.DocumentException: Not enough space
Где проблема и как ее решить?
Проверьте ссылку, и я надеюсь, что это вам поможет. http://stackoverflow.com/questions/17149053/cant-add-ltv-to-pdf-document-error –
Эй, можете ли вы помочь мне в этом, у меня есть строка PKCS7 (получена как ответ от api) «MIILwwYJKoZIhvcNAQcCoIILtDCCC7ACAQExDzANBglghkgBZQMEAgEFADALBgkqkiG9w0BBwGg ..........» – Mudit
И мне нужно подписать pdf-файл, используя его. Я просмотрел ваш код, но я не могу понять, как его применять. Пожалуйста, помогите – Mudit