Шаги, связанные с добавлением цифровой подписи в файл PDF:
(I) Создать шаблон PDFDocument:
Создание PDFDocument с подписью шаблона:
PDSignature pdSignature,
pdSignature.setByteRange (new int [] {0, 0, 0, 0});
pdSignature.setContents (новый байт [n * 1024]);
где n - целое число, т. Е. Кратное число килобайт.
Примечание. Размер содержимого должен быть больше или равен сумме длины файла подписи и сертификата.
(II) Обновление шаблона PDF документа:
(a) Обновить / ByteRange [a b c d]:
(i) a = смещение% в "% PDF" (= 0, по умолчанию)
(ii) b = смещение "
(iii) c = смещение> in "/Contents<000...000>"
(iv) d = смещение F в "%% EOF" -c
(b) обновить раздел внешних ссылок:
обновить таблицу перекрестных ссылок (раздел xref), в которой указано положение объектов и
(c) Обновить раздел startxref:
обновить startxref, который является смещением начала таблицы перекрестных ссылок (xref).
(III) Создание цифровой подписи обновленного типового документа:
Создание обновленного шаблонного документа, исключая подписанные данные ("000 ... 000) из" /Contents<000...000>"
(IV) Обновить содержимое <> Раздел:
Замените первые / начальные "0" длины подписанных данных в "/ Содержание <000 ... 000>" на подписанные данные (в конверте) шаблона PDFFile.
Предложения:
Использовать SignatureInterface PDFBox:
(a) реализовать SignatureInterface для метода call ()
(б) предоставить входные, выходные файлы, хранилище ключей, псевдоним, пин-код
(c) сохраните сумму
(или) использовать любую библиотеку java pdf (например, iText ...)
(или) Реализуйте Шаги I-IV в Java самостоятельно.