OFD標準介紹
OFD(Open Fixed-Layout Document) 是電子文件管理的基礎標準之一,由于其固定版式呈現的特點,各類文檔排版后的固化結果都可使用本標準來承載 ;同時對于各行業管理中有關元數據、語義、數字簽名等要求,本標準也提供相應的可擴展機制予以支持。OFD作為基礎標準在版式文檔范疇內反映了行業管理要求,提供了足夠的擴展性,與行業應用中的標準規范是并行的,各行業規范只在版式文檔存儲格式方面引用本標準。OFD版式文件具有以下特點:
(1)采用XML技術描述文本數據,采用“容器+文檔”的方式描述和存儲數據;
(2)真實地保持原有文檔中文字、圖表、公式、色彩等版式信息,且這種特性不隨平臺變化而改變;
(3)采用二維向量圖像模型,可以描述包括文字、圖形、圖像等經過精密排版的頁面像素;
(4)國家層級的自主版式格式,實現了文檔的原始內容和批注附加內容的分離保存
可在國家標準全文公開系統預覽《GB∕T 33190-2016 電子文件存儲與交換格式 版式文件》標準內容;
OFD格式轉換:北京數科網維文檔轉換預覽,福昕OFD版式辦公套件安裝完成后可通過虛擬打印機轉換為OFD格式,永中DCS
準備工作:檔案章圖片(生成細節略)、OFD文件、Visual Studio IDE
可將文件后綴名改為zip再解壓以查看OFD文件的層次結構。實際編碼中需要引入System.IO.Compression.ZipFile包。
文件 | 說明 |
OFD.xml | 文件主人口文件,一個包內存在且只存在一個OFD.xml 文件,此文件名不應修改 |
Doc_0/Document.xml | 文檔的根節點 |
Doc_0/DocumentRes.xml | 文檔自身資源索引 |
Doc_0/PublicRes.xml | 文檔公共資源索引 |
Doc_0/Pages/Page_0/Cotent.xml | 文檔第0 頁的內容描述 |
Doc_0/Res/seal.png | 文檔資源文件 |
ZipFile.ExtractToDirectory(ofd文件路徑, 解壓目錄);
注意:OFD標準中XML文檔使用的命名空間為http://www.ofdspec.org/201 6,其標識應為ofd;應在包內各XML文檔的根節點中聲明defaults:ofd。元素節點應使用命名空間標識,元素屬性不使用命名空間。
有些廠商轉換的OFD文件命名空間為http://www.ofdspec.org或其它,因此需要根據文件指定的命名空間來讀取和寫入數據。
ID | XML文件 | XPath | 數據 |
1 | OFD.xml | ofd:OFD/ofd:DocBody/ofd:DocRoot | 主入口文件路徑 |
2 | Document.xml | ofd:Document/ofd:CommonData/ofd:MaxUnitID | 文檔全局自增ID |
3 | Document.xml | ofd:Document/ofd:CommonData/ofd:DocumentRes | 資源文件路徑 |
4 | Document.xml | ofd:Document/ofd:Pages/ofd:Page[1] | 首頁路徑 |
5 | DocumentRes.xml | ofd:Res/ofd:MultiMedias/ofd:MultiMedia/ofd:MediaFile[text()='seal.png'] | 檔案章圖片名稱 |
6 | DocumentRes.xml | ofd:Res/ofd:MultiMedias/ofd:MultiMedia/ofd:MediaFile[text()='seal.png']/.. | 檔案章圖片資源ID |
7 | Content.xml | ofd:Page/ofd:Area/ofd:PhysicalBox | 頁面尺寸信息 |
(1) 將六格檔案章圖片復制到解壓目錄相對路徑Doc_N/Res下,Doc_N由數據1決定;
(2) DocumentRes.xml文件ofd:Res/ofd:MultiMedias路徑下創建子元素MultiMedia,DocumentRes.xml路徑由數據3決定,并自增數據2寫入ID屬性;
(3) 在上一步MultiMedia節點創建子元素MediaFile;
(4) Content.xml文件ofd:Page/ofd:Content/ofd:Layer路徑下創建子元素ImageObject,Content.xml路徑由數據4決定,并自增數據2寫入ID屬性;其中Boundary、CTM由數據7計算得出,需將圖片像素先轉換為毫米再進行計算,ResourceID為第(2)步的自增ID;
(5) 更新Document.xml文件ofd:Document/ofd:CommonData/ofd:MaxUnitID值為數據2;
(6) 保存以上所有修改
打包并刪除臨時解壓文件
ZipFile.CreateFromDirectory(解壓路徑, ofd文件路徑);
Directory.Delete(解壓路徑, true);
本文轉載自:https://www.cnblogs.com/WalkingDead/p/11679072.html