從一份電子發票認識OFD和XML格式
當前位置:點晴教程→知識管理交流
→『 企業管理交流 』
/引言/ OFD(Open Fixed-layout Document)是我國自主研發的一種版式文檔格式,相比于市場上流行的PDF(Portable Document Format)格式,是一種更自主、更創新、更可靠的選擇。 從國家標準方面看,OFD格式正式開始于《電子文件存儲與交換格式 版式文檔》(GB/T 33190-2016),在此基礎上,根據電子文件長期保存、自包含、自描述等檔案管理需求,《信息技術 OFD檔案應用指南》(GB/T 42133-2022)對OFD進一步提出標準化要求。 目前OFD格式在黨政機關電子公文歸檔和電子發票方面應用較為廣泛,備受行政辦公、公共事務辦理等業務從業人員關注。 下面,筆者以一份電子發票為例,對OFD文件結構及內容進行概括性描述,以期幫助非專業讀者更為具象地認識到OFD的獨特之處。在此基礎上,從OFD文件格式框架“XML+ZIP”出發,進一步引導非專業讀者探知XML(Extensible Markup Language)領域。 01 獲取OFD格式電子發票 國家稅務總局電子發票服務平臺中,一份電子發票對應了3種格式的電子文件,分別是PDF、OFD、XML,可以直接下載至本地保存。 如果需要對電子發票進行離線閱覽,PDF可以使用通用瀏覽器、國內外版式文件閱讀器打開閱覽,OFD可以使用國內版式文件閱讀器打開閱覽(如金山WPS等),XML可以使用通用瀏覽器打開閱覽。PDF和OFD顯示一致,呈現為符合通俗習慣的、易于普通人閱讀理解的書面表格樣式,這也是PDF、OFD被稱之為“版式”格式的主要原因。而XML與前兩者不同,呈現為多層級的結構化數據排列樣式,易于機器解析,相比之下,對于自然人而言,XML的閱讀理解難度遠遠大于版式文檔。 02 解壓電子發票看OFD文件結構 兩步呈現OFD電子發票的“XML+ZIP” 現代文件格式框架。 # 第一步:解壓。 直接將OFD電子文件后綴名“.ofd”修改為“.ZIP”,便得到一個ZIP壓縮包,使用解壓工具對壓縮包進行解壓,便得到一個文件夾。 # 第二步:逐層查看文件結構。 進入文件夾,便可依次查看各層文件夾和XML文件。 通過上述簡單的兩步操作,可以清晰地感受到OFD現代文件格式框架的涵義,多層文件夾結構顯得既簡煉又清晰,讓人感覺十分干凈。 03 版式呈現內容數據結構化組織 OFD文件結構打開后,對照GB/T 33190-2016和GB/T 42133-2022,便可進一步認識各個文件夾及XML的內容及作用。 GB/T 42133-2022給出的OFD文件的包內結構如下圖所示: # 第一層: 含文件夾“文檔夾(Doc_0)”和XML“主入口OFD.xml”。主入口XML提供了文檔的結構和內容的入口點,是訪問和解析整個文檔內容的起點,其內容結構如下圖所示: # 第二層: 含文件夾“注釋(Annots)”、“頁樹(Pages)”、“資源(Res)”、“標引(Tags)”和 XML“文檔入口Document.xml”、“文檔資源DocumentRes.xml”、“公共資源PublicRes.xml”。OFD文件結構第二層將文檔內容按照功能或特性進行分組,以便更好地管理和訪問內容,同時也可以提高OFD文件的可維護性。 # 第三層及更深層: 以“頁樹(Pages)”為例,第三層為文件夾“頁面(Page N)”,第四層為XML“頁面描述Content.xml”,描述文檔頁面信息。 XML(Content.xml)中,Area描述頁面區域, Content描述頁面內容;在Content下,Layer描述層對象;在Layer下,TextObject描述文字對象,PathObject描述圖形對象,ImageObject描述圖像對象。 TextObject文字對象依次描述了編號標識(ID)、區域(Boundary)、字體(Font)、大小(Size)、定位(TextCode)、字間距(DeltaX)、值。 PathObject圖形對象依次描述了編號標識(ID)、區域(Boundary)、線寬(LineWidth)、線型(Fill)、圖形輪廓(AbbreviatedData),M、B、L分別指代不同的路徑方式。 ImageObject圖像對象依次描述了編號標識(ID)、圖像變換矩陣(CTM)、區域(Boundary)、引用資源編號標識(ResourceID)。 通過對OFD中文件夾和XML的逐層拆解,可以看出OFD文檔自包含、自描述的嚴謹和細致,在國家標準的規定下,任意數據在XML內、XML與XML之間均能實現相互引用、相互解釋。 相比之下,PDF則難以在通用環境下呈現出結構化的數據形態,若將PDF電子文件后綴“.pdf”修改為“.txt”,再使用記事本打開,將呈現為具有一定規律但難以被自然人閱讀理解的字符塊。 04 回看XML文件數據結構與內容 回看從官網中直接下載的電子發票XML,對照《電子發票基礎信息規范》(GB/T 36609-2018),在XML結構樹中,首先是EInvoice描述電子發票;在EInvoice下, EInvoiceData描述電子發票數據,SellerAuthentication描述賣方認證信息等;在SellerAuthentication下,SellerIdNum描述銷售方識別號,SellerName描述銷售方名稱,SellerAddr描述銷售方地址等。 對比OFD中的XML和電子發票XML,可以分析出兩者的相同之處和不同之處。 相同之處 主要體現為兩點,一是XML中的數據項以層級樹狀結構組織在一起,二是XML中數據項的基本形式為<屬性>值,數據值被對尖括號標簽<>所包含。清晰明了的結構設定本身就是XML描述語言的優勢所在。 不同之處 主要體現為兩點,一是XML中數據項的定義不同,二是XML中<屬性>值的基本形式可以被說明、擴充。靈活且包容的自定義特性正是XML擴展性的體現。 05 結語 基于上文的闡述,我想大家對于OFD文件格式有了比較深入的了解,可以說OFD是由XML組合而成的版式文檔,OFD的特點在于自主可控、現代文件格式框架;而XML的特點在于結構簡單清晰、應用靈活擴展、便于計算機程序訪問和處理;當然,PDF格式也有其優勢,比如應用更為廣泛,生態更為豐富等,各種文件格式之間的轉換也更為方便,對于普通用戶來說更通用、更易用、更實用。 我想這也是國家稅務總局官網為什么要提供PDF、OFD、XML三種格式電子發票的原因吧! 該文章在 2024/7/25 0:15:54 編輯過 |
關鍵字查詢
相關文章
正在查詢... |