前言 ofd文件拆分合並會在多個場合用到,但市面上此類工具並不多。拆分和合並雖然為兩個功能,但從編程角度考慮,其處理思路有相同之處。文章就以合並為例,講一下處理思路。作者也寫了一個拆分合並小工具(加入qq群618168615下載),歡迎使用。
程序界面如下:
具有的功能:ofd合並、ofd合並為pdf、ofd批量轉pdf。
ofd合並就是將多個ofd合並到一個文件,方便閱讀和歸檔。文檔合並只考慮顯示部分,非顯示部分不考慮;如:大綱、元數據、附件;在合並后,就會丟失。ofd文件合並需要考慮的因素有:頁,模板、簽章、批注等,這些都會影響顯示的內容。下面根據這幾項逐步分析處理步驟。
1 ofd頁處理
頁中包含的id和資源均要做處理。需要處理的項如下:
- ID:ofd中的id是不允許重復的,所有的id均要重新賦值。
- Font: 指向的是字體名稱
- ColorsSpace:顏色空間。
對所有表示id引用的值都要做替換,兩個不同的文件可能會用到相同的id,但是其代表的含義是不同的,必須重新賦值,
2 模板處理
Page頁中會有引用模板描述。
Document列出所有的模板列表
首先要對TemplateID重新編碼,將模板文件信息寫入新的Document中。
3 簽章
SignedValue.dat值也要存入新的ofd文件中,在Seal.esl文件缺失的情況下,可以從此文件中讀取印章圖片。
Seal.esl為印章圖片,需要寫入新的ofd文件中。
StampAnnot:確定了印章在某頁的位置。 PageRef需要重新賦值。
4 批注
在 Annotations文件中,PageID和FileLoc需要重新賦值。
Annotation文件內容與page內容有點類似。id需要重新賦值。
后記:ofd文件的拆分合並需要將所有的id重新編號,引用此編號的部分也要做相應調整。若完美的實現拆分合並,還是有很多邏輯需要處理。本人已初步編碼實現了此功能,可以加QQ群618168615下載程序試用。