如何使用图像创建 XFDF 注释
How to create XFDF annotation with an image
我想在 Java 中生成一个内部有透明图像的 XFDF 图章注释。我在识别图像的存储格式以及如何将我的输入图像转换为该格式时遇到了严重的问题。
到目前为止我知道
- stamp 元素是 annots 元素的子元素,对应于 Rubber Stamp 注释。橡皮戳注释显示的文本或图形看起来就像是用橡皮戳印在页面上一样。
如果存在,外观子元素(注释字典中的 AP 键)优先于图标属性(橡皮图章注释字典中的名称键)。
内容模型
( contents-richtext? & contents? & appearance? & popup? )
- appearance 元素是 stamp 元素的子元素,对应于注释字典中的 AP 键。该值是 base 64 编码的字符串。
内容模型
Base 64 编码的字符串。
属性
None.
我有一个包含图像的示例 XFDF,当我解码图像时,我看到了这样的语法,但遗憾的是我不知道 标签。
<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 中的任何其他工具可以让我导出它,付费工具除外。
它是 DCT 格式 (JPEG) 的十六进制表示。如果想要一个透明的图像图章,您的 XFDF 中将有两个这样的东西,图像本身和蒙版。
XFDF 规范没有解释那些字典标签的用途。猜猜他们遗漏了
信息的重要组成部分。
这个线程让我节省了时间来弄清楚为什么生成的 base 64 图像没有导入到 Acrobat 中。所以它是 XOjbect 的 XML。
也许 acrobat PDF 规范提到了这一点。
添加如下所示的图章元素:
<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>
我想在 Java 中生成一个内部有透明图像的 XFDF 图章注释。我在识别图像的存储格式以及如何将我的输入图像转换为该格式时遇到了严重的问题。
到目前为止我知道
- stamp 元素是 annots 元素的子元素,对应于 Rubber Stamp 注释。橡皮戳注释显示的文本或图形看起来就像是用橡皮戳印在页面上一样。 如果存在,外观子元素(注释字典中的 AP 键)优先于图标属性(橡皮图章注释字典中的名称键)。 内容模型 ( contents-richtext? & contents? & appearance? & popup? )
- appearance 元素是 stamp 元素的子元素,对应于注释字典中的 AP 键。该值是 base 64 编码的字符串。 内容模型 Base 64 编码的字符串。 属性 None.
我有一个包含图像的示例 XFDF,当我解码图像时,我看到了这样的语法,但遗憾的是我不知道 标签。
<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 中的任何其他工具可以让我导出它,付费工具除外。
它是 DCT 格式 (JPEG) 的十六进制表示。如果想要一个透明的图像图章,您的 XFDF 中将有两个这样的东西,图像本身和蒙版。
XFDF 规范没有解释那些字典标签的用途。猜猜他们遗漏了 信息的重要组成部分。
这个线程让我节省了时间来弄清楚为什么生成的 base 64 图像没有导入到 Acrobat 中。所以它是 XOjbect 的 XML。
也许 acrobat PDF 规范提到了这一点。
添加如下所示的图章元素:
<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>