通过对象改组修改PDF(与Acrobat 6.0及更高版本兼容)

时间:2016-07-23 06:40:09

标签: python pdf

我正在尝试获取PDF文件,更改了对象的顺序(索引未更改,只有文件内对象的位置)。 在那之后,我正在使用新的对象偏移量来创建新的外部参照流

我用Python实现了程序,但生成的文件总是被损坏。

问题:

  1. 如何使文件非线性化?目前,我正在从文件及其外部参照条目中删除线性化对象
  2. 令牌“endstream”应该通过\ r \ n与其内容明确分开,还是没有必要?
  3. ....
  4. 可能我错过了一些重要的事实和细微差别?我将不胜感激任何帮助

1 个答案:

答案 0 :(得分:0)

由于既没有显示您的代码也没有描述结果文件损坏的性质(更不用说共享示例原始文件和重新排序的文件),因此很难为您提供帮助。

  
      
  1. 如何使文件非线性化?目前,我正在从文件及其外部参照条目中删除线性化对象
  2.   

删除线性化参数字典是个好主意。关于交叉引用,请注意两个表中的条目都是相关的。

  
      
  1. 令牌“endstream”应该通过\ r \ n与其内容明确分开,还是没有必要?
  2.   

引用PDF规范:

  

数据之后和endstream之前应该有行尾标记

     

(第7.3.8节流对象 - ISO 32000-1)

“应该”表示强烈建议但不是要求。因此,您的代码必须面对那些没有行尾标记的PDF。

顺便说一下,

  

CARRIAGE RETURN(0Dh)和LINE FEED(0Ah)字符,也称为换行符,应为   作为行尾(EOL)标记处理。 CARRIAGE RETURN的组合紧接着是a   LINE FEED应被视为一个EOL标记。

     

(第7.2.2节字符集 - ISO 32000-1)

因此,即使有行结束标记,它也不一定是\r\n,也可能是单\r\n