Как прикрепить изображение к полю формы PDF, не аннулируя существующую подпись с помощью PDFBox?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как прикрепить изображение к полю формы PDF, не аннулируя существующую подпись с помощью PDFBox?

Сообщение Anonymous »

Пример использования: я работаю над функцией, которая требует прикрепления изображения к PDF-файлу без аннулирования ранее существовавшей цифровой подписи. В PDF-файле должно быть поле формы, предназначенное для вложения изображений, которое можно заполнить позже. Я хочу реализовать это с помощью PDFBox.
Реализация: поскольку в PDF-файлах нет специального поля формы изображения, я использую PDPushButton в качестве обходного пути, следуя методу описано в этих ресурсах;
  • Как программно вставить изображение в поле AcroForm с помощью Java PDFBox?
  • https:/ /github.com/mkl-public/testarea-pdfbox2/issues/1
Кроме того, PDF-файл включает поле для подписи. Этот процесс включает в себя сначала подписание поля подписи, а затем прикрепление изображения к полю PDPushButton. Однако эта последовательность приводит к тому, что подпись становится недействительной.
Вот код для прикрепления изображения к PDPushButton.

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

@SneakyThrows
public static void fillInitialField(String inputFilePath, String outputFilePath) {
// Load input file
PDDocument document = PDDocument.load(new File(inputFilePath));

// Find and link the relevant signature field
PDPushButton initial = PdfService.findInitial(document, "132323423180965");

PDImageXObject pdImageXObject = PDImageXObject.createFromFile("initial.png", document);
float width = 10 * pdImageXObject.getWidth();
float height = 10 * pdImageXObject.getHeight();

PDAppearanceStream pdAppearanceStream = new PDAppearanceStream(document);
pdAppearanceStream.setResources(new PDResources());
try (PDPageContentStream pdPageContentStream = new PDPageContentStream(document, pdAppearanceStream)) {
pdPageContentStream.drawImage(pdImageXObject, 200, 300, width, height);
}
pdAppearanceStream.setBBox(new PDRectangle(width, height));

List
 widgets = initial.getWidgets();
for (PDAnnotationWidget pdAnnotationWidget : widgets) {

PDAppearanceDictionary pdAppearanceDictionary = pdAnnotationWidget.getAppearance();
if (pdAppearanceDictionary == null) {
pdAppearanceDictionary = new PDAppearanceDictionary();
pdAnnotationWidget.setAppearance(pdAppearanceDictionary);
}

pdAppearanceDictionary.setNormalAppearance(pdAppearanceStream);
}
initial.setReadOnly(true);

// Save and close the document
FileOutputStream fos = new FileOutputStream(outputFilePath);
document.save(fos);
document.close();
}
Я создал репозиторий, воспроизводящий эту проблему, который можно найти здесь: https://github.com/ContractSPAN/ImageFormFieldIssue
Как я могу реализовать вложение изображения в поле формы PDF таким образом, чтобы это не делало недействительной существующую подпись? Я открыт для альтернативных подходов для достижения этой функциональности.

Подробнее здесь: https://stackoverflow.com/questions/783 ... sting-sign
Ответить

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

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

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

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

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