Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向PDF添加注释行_Java_Pdf - Fatal编程技术网

Java 向PDF添加注释行

Java 向PDF添加注释行,java,pdf,Java,Pdf,PDF文件的结构如下(或多或少,只是为了描述我的需求) 但是,如果我在上面列表的最后两个元素之间添加这样的%text格式的文本,PDF不会被破坏,并且PDF阅读器会忽略该行,对吗? 据我所知,PDF中的“%”与Java中的“/”相同 我想通过这种方式将一些自定义数据添加到PDF中。这可能不是最好的方法,但对我来说是最简单的方法。以后我可能会改变它,但现在我想坚持下去 问题是,首先,我假设如果这些行被添加到PDF的正确位置,PDF本身不会被破坏,其次,我想知道应该使用哪些类和方法来实现这一点 我从

PDF文件的结构如下(或多或少,只是为了描述我的需求)

但是,如果我在上面列表的最后两个元素之间添加这样的
%text
格式的文本,PDF不会被破坏,并且PDF阅读器会忽略该行,对吗? 据我所知,PDF中的“%”与Java中的“/”相同

我想通过这种方式将一些自定义数据添加到PDF中。这可能不是最好的方法,但对我来说是最简单的方法。以后我可能会改变它,但现在我想坚持下去

问题是,首先,我假设如果这些行被添加到PDF的正确位置,PDF本身不会被破坏,其次,我想知道应该使用哪些类和方法来实现这一点

我从普通的PDF开始,我想用我的数据丰富的PDF结束

如果我在上面列表的最后两个元素之间添加像这样的
%text
格式的文本,PDF不会损坏,并且PDF阅读器会忽略该行,对吗

错了

首先,您给定的PDF文件结构不完整(甚至无法“描述您的需求”)。它缺少
startxref
元素

PDF文件的正确(粗略)结构需要考虑这四个元素:

  • PDF标题
  • PDF正文(对象)
  • PDF外部参照表
  • PDF预告片
  • 交叉引用表是一种目录,列出PDF文件中的所有对象。这些对象通过TOC列表定位,其文件字节偏移量值从文件开始计算

    因此,如果在PDF中插入任何内容(即使是PDF阅读器应忽略的注释),则必须为插入注释之后的所有对象调整外部参照表中的字节偏移值

    然后,尾文件的重要性紧随其后:它包含一个名为
    startxref
    的条目,该条目保存(最后一个)外部参照节的文件字节偏移量值。(最后一个外部参照节,因为PDF文件可能不仅有一个外部参照节,还有多个外部参照节。)

    因此,合格的PDF阅读器应该从头开始阅读PDF文件。在那里可以找到外部参照表的位置。然后,通过读取外部参照表,他们将找到每个对象

    在您的特殊情况下(您希望在所有PDF对象之后,但在外部参照表之前插入注释),您还需要调整
    startxref
    关键字给出的数字:如果您的注释长度为55个字符(包括换行符),则将55添加到上一个值,这样您就可以了

    %Header containing PDF version and two characters that ensure PDF is read properly
    //objects
    //cross-reference table