java - 如何使用图像创建 XFDF 注释

标签 java image pdf xfdf pdf-annotations

我想用 Java 生成一个 XFDF 标记注释,里面有一个透明图像。我在识别图像存储格式以及如何将输入图像转换为该形式时遇到了严重困难。

目前我知道

  • stamp 元素是 annots 元素的子元素,对应于橡皮图章注释。橡皮图章注释显示文本或图形,看起来就像用橡皮图章印在页面上一样。 如果存在,外观子元素(注释字典中的 AP 键)优先于图标属性(橡皮图章注释字典中的 Name 键)。 内容模型 (内容-richtext?&内容?&外观?&弹出窗口?)
  • 外观元素是图章元素的子元素,对应于注释字典中的 AP 键。该值是一个 Base 64 编码的字符串。 内容模型 Base 64 编码的字符串。 属性 没有。

我有一个包含图像的示例 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 中将包含其中的两个内容:图像本身和蒙版。

关于java - 如何使用图像创建 XFDF 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39891078/

相关文章:

java - 奇怪的分割方法

java - 如何使用 spring jdbctemplate 而不是在 Java 中直接插入查询来调用 PostgreSQL 函数?

css - 当窗口大小减小时自动缩小图像(并保持内联)

html - 如何让文本覆盖在图像上?

javascript - 将图像添加到 JS React Portfolio 时出现错误消息

xml - 使用预先创建的 PDF 页面作为书籍封面

java - 使用单个正则表达式减少字符串代码

java - 如果按下 Esc 则中断循环

javascript - 使用 JavaScript 读取远程 PDF 文件

c# - Aspose.pdf : Why are Chinese characters "Blanked Out"?