如何使用图像创建XFDF注释

时间:2016-10-06 08:23:48

标签: java image pdf xfdf pdf-annotations

我想在Java中生成一个内部有透明图像的XFDF Stamp Annotation。我很难识别存储图像的格式以及如何将输入图像转换为该图像。

到目前为止,我知道

  • stamp元素是annots元素的子元素,对应于Rubber Stamp注释。橡皮图章注释显示文本或图形,看起来好像用橡皮图章印在页面上。 如果存在,则外观子元素(注释字典中的AP键)优先于图标属性(橡皮图章注释字典中的名称键)。 内容模型 (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">

我已经设法在PDFBox的帮助下用PDF中的自定义图像创建了一个橡皮图章注释,但遗憾的是PDFBox似乎不支持将这种注释导出到XFDF,它们只支持从Forms(AcroForm)导出。我不知道Java中允许我导出它的任何其他工具,除了付费工具。

3 个答案:

答案 0 :(得分:2)

这是DCT格式(JPEG)的HEX表示。如果想要一个透明的图像标记,你将在你的XFDF,图像本身和面具中有两个这样的东西。

答案 1 :(得分:0)

XFDF规范没有解释那些dict标签的用途。猜猜他们离开了 信息的关键部分。

这个帖子让我有时间弄清楚为什么生成的base 64图像不会导入到Acrobat中。所以它是XOjbect的XML。

也许acrobat PDF规范提到了这一点。

答案 2 :(得分:0)

添加如下所示的图章元素:

<stamp creationdate="D:20200422160322Z" flags="print" date="D:20200422160322Z" icon="Unknown" page="0" rect="276.675,778.525,318.325,841">
  <imagedata>data:image/png;base64,iVBORw0 . . . FTkSuQmCC</imagedata>
  <apref y="841" x="276.675" gennum="2" objnum="198" />
</stamp>