04
2024
11
14:37:40

从一份电子发票认识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三种格式电子发票的原因吧!




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8307.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: