我有PDF文件,它们是将多个tiff文件合并在一起的结果。所以每个页面实际上都是 ImageXObject 。如果由PDF Walker打开,每个页面都会如此。
7 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 1653
/Height 2339
/BitsPerComponent 4
/ColorSpace [ /Indexed /DeviceRGB 15 8 0 R ]
/DecodeParms [ <<
/Columns 1653
>> ]
/Filter [ /FlateDecode ]
/Length 219260
>>
我发现PDF错误地生成了相关的内容流 - 它缺少了最后几行数据。如果我尝试在Acrobat Reader中打开此类PDF,则会显示错误消息图像数据不足。如果通过例如长度降低长度,则可以解决该问题。 10(定义常数)。
文字/Height 2339
应更新为例如/Height 2330
。这足以克服这个问题。
如果在文本文件中应该这样做,我会使用正则表达式来查找页面高度并根据需要更新它们。但我不确定如何最好地处理二进制文件中的更新。
注意:我不是在询问如何读/写二进制文件。 PDF文件可以加载到内存中,例如作为字节数组。问题更多的是关于如何有效处理问题的方法。无需循环遍历数组并比较序列/Height
的每六个字节,然后查找应该表示像素数等的下一个字节。