/引言/
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三种格式电子发票的原因吧!
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/8307.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~