2016-04-25 62 views
0

我試圖通過使用PDF版本控制系統將一些數據附加到PDF頁面(例如將數據附加到有效結尾PDF與它自己的XREF和什麼不)。是否有可能通過修改原始頁面對象將數據附加到PDF頁面

現在我只是試圖做一個概念驗證。我可以在現有頁面上添加一個橙色正方形,但它需要我解析出原始頁面對象,更改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 

正如你所看到的,我只是改變了內容陣列插入我自己的數據(使用一個橙色的正方形對象ID「901」)。

是否有可能實現相同的結果而不解析&修改原始頁面對象?

回答

1

由於/ Contents數組是一個直接對象,因此整個頁面對象都會被修改,因此您必須解析頁面對象並用新的/ Contents數組重新寫入。

如果/ Contents是間接對象,那麼您可以只修改數組而不觸及頁面對象。

相關問題