Я хотел бы создать на Java аннотацию штампа XFDF, внутри которой будет прозрачное изображение. У меня серьезные проблемы с распознаванием формата, в котором хранится изображение, и как преобразовать входное изображение в эту форму.
Пока я знаю
- Элемент штампа является дочерним элементом элемента annots и соответствует аннотации Rubber Stamp. Аннотация Резиновый штамп отображает текст или графику, которые должны выглядеть так, как если бы они были проштампованы на странице с помощью резинового штампа. Если присутствует, дочерний элемент внешнего вида (ключ AP в словаре аннотаций) имеет приоритет над атрибутом значка (ключ Name в словаре аннотаций штампа). Модель контента (content-richtext? &contents?&appearance?&popup?)
- Элемент внешнего вида является дочерним элементом элемента штампа и соответствует ключу AP в словаре аннотаций. Значение представляет собой строку в кодировке base 64. Строка модели содержимого в кодировке Base 64. Атрибуты Нет.
У меня есть пример XFDF, который содержит изображение, когда я декодирую изображение, я вижу такой синтаксис, но, к сожалению, я понятия не имею, какие необработанные данные присутствуют в ‹DATA MODE=RAW ENCODING=HEX› тег.
<DICT KEY="AP">
<STREAM KEY="N">
<ARRAY KEY="BBox">
<FIXED VAL="250"/>
<FIXED VAL="550"/>
<FIXED VAL="400"/>
<FIXED VAL="575"/>
</ARRAY>
<INT KEY="FormType" VAL="1"/>
<INT KEY="Length" VAL="35"/>
<DICT KEY="Resources">
<DICT KEY="XObject">
<STREAM KEY="Im1">
<INT KEY="BitsPerComponent" VAL="8"/>
<NAME KEY="ColorSpace" VAL="DeviceRGB"/>
<NAME KEY="Filter" VAL="FlateDecode"/>
<INT KEY="Height" VAL="150"/>
<INT KEY="Length" VAL="1907"/>
<STREAM KEY="SMask">
<INT KEY="BitsPerComponent" VAL="8"/>
<NAME KEY="ColorSpace" VAL="DeviceGray"/>
<NAME KEY="Filter" VAL="FlateDecode"/>
<INT KEY="Height" VAL="150"/>
<INT KEY="Length" VAL="5690"/>
<NAME KEY="Subtype" VAL="Image"/>
<NAME KEY="Type" VAL="XObject"/>
<INT KEY="Width" VAL="300"/>
<DATA MODE="RAW" ENCODING="HEX">
Мне удалось создать аннотацию Rubber Stamp с пользовательским изображением в PDF с помощью PDFBox, но, к сожалению, PDFBox, похоже, не поддерживает экспорт такого рода аннотаций в XFDF, они поддерживают только экспорт из форм (AcroForm). Я не знаю другого инструмента на Java, который позволил бы мне его экспортировать, кроме платных.