我试图通过使用PDF版本控制系统将一些数据附加到PDF的页面(例如,将数据附加到有效PDF的末尾,并使用它自己的XREF,不是什么)。
现在我只是想做一个概念验证。我可以在现有页面上添加橙色方块,但它需要我解析原始页面对象,更改Contents数组,并添加我附加的数据。例如:
原始页面:
5 0 obj
<<
/Parent 4 0 R
/Contents[2 0 R 8 0 R 3 0 R]
/Type
/Page
/Resources
<<
/ExtGState
<<
/GSa 6 0 R
>>
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/XObject
<<
/Im9 9 0 R
>>
/ColorSpace
<<
/CSp/DeviceRGB/CSpg/DeviceGray/PCSp 7 0 R
>>
/Font
<<
/F11 10 0 R
/F6 11 0 R
/Xi0 1 0 R
>>
>>
/MediaBox[0 0 595 842]
/Annots 12 0 R
>>
endobj
修改页面:
5 0 obj
<<
/Parent 4 0 R
/Contents[2 0 R 8 0 R 3 0 R 2 0 R 901 0 R 3 0 R]
/Type
/Page
/Resources
<<
/ExtGState
<<
/GSa 6 0 R
>>
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/XObject
<<
/Im9 9 0 R
>>
/ColorSpace
<<
/CSp/DeviceRGB/CSpg/DeviceGray/PCSp 7 0 R
>>
/Font
<<
/F11 10 0 R
/F6 11 0 R
/Xi0 1 0 R
>>
>>
/MediaBox[0 0 595 842]
/Annots 12 0 R
>>
endobj
正如您所看到的,我只是改变了Contents数组以插入我自己的数据(一个带有对象ID&#34; 901&#34;的橙色方块)。
是否可以在不解析的情况下实现相同的结果修改原始页面对象?
答案 0 :(得分:1)
由于/ Contents数组是直接对象,因此修改整个页面对象,因此您必须解析页面对象并使用new / Contents数组重写它。
如果/ Contents是一个间接对象,那么你可以只修改数组而不触及页面对象。