2016-10-06 10 views
0

Я хотел бы сгенерировать на Java XFDF Stamp Annotation, которая будет иметь прозрачное изображение внутри. У меня есть серьезные проблемы с распознаванием формата, в котором хранится изображение, и как преобразовать входное изображение в эту форму.Как создать аннотацию XFDF с изображением

До сих пор я знаю

  • элемент штампа является потомком элемента annots и соответствует Rubber Stamp аннотацию. В аннотации Rubber Stamp отображается текст или графика, которые выглядят так, как если бы они были напечатаны на странице с помощью штампа. Если присутствует, дочерний элемент внешнего вида (ключ AP в словаре аннотаций) имеет приоритет над атрибутом значка (имя ключа в словаре аннотаций резиновой маркировки). Content модели (содержание-RichText? & содержания? & внешность? & всплывающее окно?)
  • Внешний элемент является потомком элемента штампа и соответствует клавише AP в словаре аннотаций. Значение представляет собой базовую кодированную строку. Модель контента Базовая кодированная строка 64. Атрибуты Нет.

У меня есть пример XFDF, который содержит изображение, когда я декодировать изображение я получаю, чтобы увидеть синтаксис, как это, но, к сожалению, я понятия не имею, какие исходные данные присутствуют в < ДАННЫХ РЕЖИМ = " 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, которые позволят мне экспортировать их, кроме платных.

ответ

2

Это представление HEX формата DCT (JPEG). Если вы хотите получить прозрачную печать, у вас будет две вещи в вашем XFDF, самом изображении и маске.

+0

Поддерживается ли это только один формат или вы принимаете его из примера контента? Не могли бы вы указать мне на это документацию? – Javo

+0

Я предположил, что это основано на образце, которое я создал, создав специальную марку из файла PNG с использованием Acrobat DC. Документация для XFDF находится по ссылке ниже https://partners.adobe.com/public/developer/en/xml/XFDF_Spec_3.0.pdf – joelgeraci

+0

Я попытался преобразовать Base64 в текст, преобразовать Hex в текст и сохранить это как jpg, и это не сработало. Но я признаю, что мог совершить ошибочное обращение. Спецификация, на которую вы указали мне, не говорит о формате. – Javo

0

Спецификации XFDF не объясняют, для чего предназначены те теги dict. Полагают, что они оставили важной частью информации.

Этот поток спас мне время, чтобы понять, почему итоговое изображение базы 64 не импортируется в Acrobat. Таким образом, это XML XOjbect.

Возможно, это спецификация acrobat PDF.