CN102103573B - 一种快速生成开放格式文档的方法及系统 - Google Patents

一种快速生成开放格式文档的方法及系统 Download PDF

Info

Publication number
CN102103573B
CN102103573B CN200910242832A CN200910242832A CN102103573B CN 102103573 B CN102103573 B CN 102103573B CN 200910242832 A CN200910242832 A CN 200910242832A CN 200910242832 A CN200910242832 A CN 200910242832A CN 102103573 B CN102103573 B CN 102103573B
Authority
CN
China
Prior art keywords
template
document
resource
data
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200910242832A
Other languages
English (en)
Other versions
CN102103573A (zh
Inventor
杨勇
尚高峰
闫国龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New Founder Holdings Development Co ltd
Beijing Founder Electronics Co Ltd
Original Assignee
Peking University Founder Group Co Ltd
Beijing Founder Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peking University Founder Group Co Ltd, Beijing Founder Electronics Co Ltd filed Critical Peking University Founder Group Co Ltd
Priority to CN200910242832A priority Critical patent/CN102103573B/zh
Publication of CN102103573A publication Critical patent/CN102103573A/zh
Application granted granted Critical
Publication of CN102103573B publication Critical patent/CN102103573B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

本发明提供一种快速生成开放格式文档的方法,包括:将任意格式的数据生成规范的结构化数据;利用开放格式的空白文档创建文档模板,并将该文档模板中的所有组件保存到模板目录下;将结构化数据转换为对应的模板组件,并用这些模板组件替换模板目录下的相应组件,同时将结构化数据中的嵌入资源加载到模板目录下的资源组件中;对整个模板目录进行压缩,生成符合所用开放格式的文档。相应地,提供一种快速生成开放格式文档的系统。本发明可将任意格式的数据快速地转换为开放格式文档,而不依赖于该格式文档所对应的应用程序,占用系统资源较少,效率高,同时还可保留嵌入资源的原有属性。

Description

一种快速生成开放格式文档的方法及系统
技术领域
本发明涉及计算机数据处理领域,尤其涉及一种利用结构化数据将任意格式的数据快速生成开放格式文档的方法及系统。
背景技术
目前,大型的出版社或报社均采用专业的排版软件(比如,方正的书版、飞腾等)进行排版,所输出的文件格式很难被其它软件兼容,也不能被再次编辑。因此,对于这些排版软件和其它类似地输出不能被再次编辑的文档撰写软件而言,存在着将它们输出的文档转换为可供再次编辑的文档(例如,微软word文档)的需求。
在将非word文档转换为word文档的现有技术(例如,http://www.blueidea.com/tech/program/2003/879.asp中所描述的方法)中,用户常常按照以下步骤来实现:
(1)输出能描述非word文档格式的xml文件;
(2)启动word应用程序;
(3)解析xml文件,调用word应用程序提供的API接口创建word文档;
(4)关闭word进程。
这种方法的缺点是:一是依赖于Word应用程序本身,通过调用微软提供的接口生成,因此,要求计算机必须安装微软word软件;二是需要启动一个word进程,占用系统资源较多;三是受微软接口的限制生成文档不灵活,速度很慢,效率低下;四是嵌入文档的资源会经过压缩处理,其属性(如图片的精度等)会被强制改变,造成资源原有属性丢失。
发明内容
为了解决现有技术中的以上问题,本发明提供一种快速将任意格式的数据生成开放格式文档的方法及系统,以在不依赖于开放格式文档应用程序自身的情况下,快速地将任意格式的数据生成符合所用开放格式文档规范的文档,同时保留文档中的嵌入资源的原有属性。
为了实现以上目的,本发明提供的利用结构化数据快速生成word文档的方法包括以下步骤:(1)将任意格式的数据生成规范的结构化数据;(2)利用开放格式的空白文档创建符合所述结构化数据的样式的文档模板,并将该文档模板中的所有组件保存到模板目录下;(3)将结构化数据转换为对应的模板组件,并用这些模板组件替换模板目录下的相应组件,同时将结构化数据中的嵌入资源加载到模板目录下的资源组件中;(4)根据更新的模板目录下的所有组件生成符合所用开放格式的文档。
相应地,本发明提供一种利用结构化数据快速生成word文档的系统,该系统包括:数据输入单元,输入任意格式的数据,并将该数据发送给处理单元;处理单元,将从数据输入单元接收的数据生成规范的结构化数据,再将该结构化数据生成符合开放格式规范的文档,并将所生成的文档发送给文档输出单元;文档输出单元,输出从处理单元接收的文档。其中,所述处理单元进一步包括设计单元、结构化单元、内部资源转换单元、外部资源转换单元、模板存储单元和文档成品单元。这些单元的操作与上述方法中相应步骤相同。
本发明将任意格式的数据转换为结构化数据(即,xml文件),然后将该结构化数据转换为所用开放格式文档的模板组件,并用这些模板组件替换根据所用开放格式的空白文档而创建的文档模板中的相应组件,同时将嵌入资源加载到该模板中的资源组件中,从而完成对文档模板的更新和加载,最后根据该更新的模板生成成品的开放格式文档。该方法不依赖于所用开放文档格式所对应的应用程序,占用系统资源较少,快速地将任意格式的数据生成符合该开放格式规范的文档,同时保留了嵌入资源的原有属性。
附图说明
图1是根据本发明的快速生成开放格式文档的方法的流程图;
图2是用于解释图1所示方法的示图;
图3是用于解释快速生成word文档的过程的示图;
图4是根据本发明的结构化数据中内部资源转换流程图;
图5是根据本发明的结构化数据中外部资源转换流程图;
图6是待转换文档的示例;
图7是显示部分word模板解压目录的示图;
图8是显示部分word模板解压目录的另一示图;
图9是图6所示文档生成word文档的效果图;
图10是根据本发明的快速生成开放格式文档的系统的流程图。
具体实施方式
目前,对于许多用户可编辑的文档,存在文档格式开放和不开放两种。而对于开放格式的文档,一般都是基于xml组件的应用。比如,微软word 2007采用的是OOXML(Office Open xml)文档格式标准(相关内容可参见http://boycottnovell.com/2008/10/02/ooxml-leaked/中的1080.pdf、OfficeOpenXML-WordprocessingMLArtBorders.zip、OfficeOpenXML-SpreadsheetMLStyles.zip、OfficeOpenXML-DrawingMLGeometries.zip、OfficeOpenXML-RELAXNG-Strict.zip和OfficeOpenXML-XMLSchema-Strict.zip这6个文件),该标准基于xml和Zip技术,因此word 2007文档是一个代码开放的zip压缩文件,其中包含多个xml文件和媒体资源文件等(比如Word中插入的图片),与以前word版本的二进制格式文件相比,更便于数据交换。因此,本发明主要的目的是在不依赖于开放格式文档所对应的应用程序自身的情况下快速地将任意格式的数据转换为基于xml组件的开放格式的文档。以下,将结合附图对本发明进行详细描述。
图1是根据本发明的快速生成开放格式文档的方法的流程图,图2是用于解释图1所示方法的示图。参照图1和图2,该方法包括以下步骤:
步骤S1、数据结构化步骤
在该步骤中,将待处理的任意格式的数据生成规范的结构化数据,即,xml数据文件。
具体地讲,首先制定用于规范结构化数据,即,xml数据的规范化文件,即,Schema或DTD文件,然后,采集待处理数据生成xml文件,并利用所制定的Schema或DTD文件对该xml文件进行规范性验证,以使所生成的xml文件符合所制定的结构化规范。不同的用户可根据自己不同的需要来定义不同的Schema或DTD文件。定义Schema或DTD文件属于XML开发技术人员已知的现有技术,因此,省略其描述。
这里,所述任意格式的数据是指,比如,一篇比如不能被用户再次编辑的文档或者数据库中的一组数据等等数据。比如,对于数据库中的一组数据,可将这些数据首先生成一个xml文件,然后通过一个word报表的形式去展现。
步骤S2、文档模板创建步骤
在该步骤中,利用开放格式的空白文档(比如,空白word 2007文档)创建符合所述结构化数据的样式的文档模板,并将该文档模板中的所有组件保存到模板目录下。
在创建文档模板时,由于某些组件中的属性(比如,字体)是不能通过转换生成的,所以必须通过在模板中添加这些属性以保留这些属性。也就是说,为了使所生成的文档能够正确地显示结构化数据中所包含的文字、图片、表格、数学公式等各种元素的样式信息(比如,文字字体、表格样式等),必须预先在文档模板加入表示文字、图片、表格、数学公式等各种元素的样式的附加信息。如果没有在文档模板中指定样式,则采用该文档模板的默认样式。
在模板创建完成之后,为了获取模板中的所有组件,由于最终呈现给用户的文档往往是文档模板组件经过压缩的文件,所以需要利用相应的压缩工具对文档模板进行解压,从而获得该文档模板中的所有模板组件,即,xml组件。
步骤S3、结构化数据转换步骤
在该步骤中,对于结构化数据中所包含的内部资源(包括文字、图片、表格、数学公式等各种类型的元素),将它们转换为所用开放格式文档的模板组件,并用这些模板组件替换模板目录下的相应组件;对于结构化数据中所包含的外部资源,即,嵌入资源,将这些嵌入资源加载到模板目录下的资源目录中,如果资源格式不能够被兼容,则先进行格式转换,然后再拷贝到资源目录中,从而形成一个经过组件更新和加载的模板目录。
在内部资源转换过程中,可利用一个样式表文件来将结构化数据中所包含的文字、图片、表格、数学公式等元素转换为对应的模板组件,即,将根据任意格式的数据而生成的xml文件转换为一个新的满足所用开放格式规范的xml文件。在样式表文件中,需要对文字、图片、表格、数学公式等各种元素建立相对应的样式表。在实际操作中,可利用XSLT转换技术根据结构化数据来创建样式表文件。XSLT转换属于xml转换的一种已知技术,因此,省略其详细描述。当然,本发明不限于利用XSLT转换技术,可使用任何已知的xml转换方法来创建样式表文件。
步骤S4、文档成品步骤
在该步骤中,根据更新的模板目录下的所有组件生成符合所用开放格式的文档。通常需要利用相应的压缩工具将模板组件压缩,从而生成最终呈现给用户的文档。
以下,将参照图3以生成word 2007文档作为开放格式文档的示例来进行进一步的说明。
首先,在步骤S1中,将待处理数据生成规范的结构化数据,即,xml文件。
接着,在步骤S2中,创建word模板。首先打开一篇空白word文档,然后在该word文档中加入示范性段落、文字或表格等,并对这些内容设定相应的属性。比如,如果要是生成的字体显示为方正胖娃,则在本机上安装有方正胖娃字体的情况下,需要在模板中加入示例文字,并设定其字体为方正胖娃。如果不指定样式,则使用word默认样式。在word模板创建完成之后,由于word文档本身是一个符合Zip压缩算法的压缩文件,所以为了获取当前word模板中的所有xml组件,即,xml文件,在word模板创建完成后,必须利用符合Zip压缩规范的压缩工具(比如,Winrar、EasyZip)将其解压后才能获得这些xml组件,包括文档的图片资源、资源关联关系文件和文档内容文件等。然后,将解压后的文件保存在指定的临时目录下,以下将该目录称为word模板解压目录,该目录包括文档关系目录(_rels)、文档属性目录(docProps)和内容目录(word),其中,括号里为目录名。相关内容可参见微软官方网站:
http://www.microsoft.com/china/msdn/library/office/office/W ord2007XMLFormat.mspx?mfr=true
接着,在步骤S3中,对根据待处理数据生成的结构化数据中所包含的内部资源和外部资源进行转换。
图4是根据本发明的内部资源转换方法的流程图。如图4所示,结构化数据30中通常可包括文字31、表格32、图片33、数学公式34等类型的内部资源。因此,需要根据相应的样式表将它们转换为对应的模板组件。其中,对于图片33,向模板组件转换时需同时在document.xml.rels中记录这些资源的关联关系。经过这些转换之后,得到不同文档元素类型对应模板组件以及资源关联关系35。
此外,在转换时为了数据交互方便,常常将两个xml文件的内容(比如,文档的内容数据和资源的关系数据)放在一个xml文件中,因此,转换完成后需要对转换后生成的xml文件进行拆分,恢复成两个xml文件,然后将拆分的文件放入word模板解压目录下的相应文件中。比如,转换时把word组件中document.xml.rels中的内容和document.xml中的内容放在了一个newdocumen.xml文件中,则需根据节点名称将各自的内容提取出来生成document.xml.rels,document.xml这两个文件。然后,将这两个文件放入word组件中相应的文件中,从而生成经过更新的word文档xml组件36。
图5是根据本发明的外部资源转换方法的流程图。参照图5,首先判断结构化数据中是否含有链接资源或者以数据流形式存在的资源。如果有链接资源,则首先判断该资源的格式是否符合OOXML规范,如果符合OOXML规范,则将该资源直接拷贝到word模板解压目录下的资源目录中,如果不符合OOXML规范,则将该资源的格式转换为能被word解析的格式,然后将转换的资源拷贝到word模板解压目录下的资源目录中。比如,对于图片资源,后缀名为“.jpg”的图片应重新命名为“.jpeg”,后缀名为“.GIF”的图片重新命名为“.GIFf”。对于Word文档不支持的图片文件,如后缀名为“eps”等格式的图片则应将其转换为能被word解析的资源再放入资源目录中。而对于数据流,则首先要将该数据流转换为资源文件,即,图片,然后与对链接资源相同的操作进行转换和拷贝。
最后,在步骤S4中,由于word文档是一个符合zip压缩算法的压缩文件,所以需要使用符合zip压缩规范的压缩工具将word模板解压目录下的所有文件夹和文件进行压缩,生成压缩文件。然后,将生成的压缩文档的后缀名修改为word后缀名,即,docx,从而完成结构化数据向符合OOXML规范的word文档的转换。
以下,将通过一个具体的例子来进一步说明本发明的技术方案和技术效果。在该示例中,待处理数据为图6所示排版文档,按照本发明方法将其生成word 2007文档。
以下是根据图6所示文档中所包含的数据及其样式而生成的xml文件,在该xml文件中,未对图像位置、段落位置以及段落字体字号进行描述。另外,在以下xml文件中,仅对段落,表格等元素仅部分列出,对于相同格式的部分采用了…代替。
<?xml version=″1.0″encoding=″utf-8″?>
<book xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″>
   <body>
      <P uid=″1″>
          <T>第一节数控机床及其分类</T>
       </P>
       <P uid=″2″>
           <T>1.数控机床的基本概念</T>
       </P>
       <P uid=″3″>
           <T>数控机床</T>
       </P>
</P>
    <P uid=″4″>
    <Image uid=″5″href=″101.jpg″>
       <Data type=″image″href=″Image0001.jpeg″></Data>
    </Image>
</P>
<P uid=″10″>
    <Table uid=″11″>
       <Data type=″content″><Table>
               <Row>
                  <Cell>
                     <Body>
                        <P uid=″12″>
                            <T>相对加工性等级</T>
                        </P>
                     </Body>
                  </Cell>
                  <Cell>
                     <Body>
                        <P uid=″16″>
                            <T>代表性材料</T>
                        </P>
                     </Body>
                  </Cell>
               </Row>
               <Row>
                  <Cell>
                     <Body>
                        <P uid=″49″>
                            <T>8</T>
                        </P>
                     </Body>
                  </Cell>
                  <Cell>
                     <Body>
                        <P uid=″52″>
                            <T>钛合金,</T>
                        </P>
                     </Body>
                  </Cell>
               </Row>
            </Table>
        </Data>
    </Table>
</P>
    </body>
</book>
然后,利用XSLT转换技术将以上xml文件进行转换,得到以下xml文件,即,符合OOXML规范的xml组件。其中,body节点对应于如图7所示word模板组件中的document.xml中的body节点,因此,将这个body节点替换模板组件中的body节点即可。另外,Relationships节点对应于如图8所示模板组件中的document.xml.rels中的Relationships节点,因此,将这个Relationships节点替换模板组件中的Relationships节点即可。这样,就完成了xml文件到对应的OOXML组件的转换。
<?xml version=″1.0″encoding=″uft-8″?>
<w:document xmlns:ve=″http://schemas.openxmlformats.org/markup-compatibility/2006″
xmlns:o=″urn:schemas-microsoft-com:office:office″
xmlns:r=″http://schemas.openxmlformats.org/officeDocument/2006/relationships″
xmlns:m=″http://schemas.openxmlformats.org/officeDocument/2006/math″
xmlns:v=″urn:schemas-microsoft-com:vml″
xmlns:wp=″http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing″
xmlns:w10=″urn:schemas-microsoft-com:office:word″
xmlns:w=″http://schemas.openxmlformats.org/wordprocessingml/2006/main″
xmlns:wne=″http://schemas.microsoft.com/office/word/2006/wordml″>
   <w:body>
      <w:p>
         <w:r>
            <w:rPr>
                <w:rFonts w:ascii=″″w:hAnsi=″″w:eastAsia=″″w:hint=″宋体
″></w:rFonts>
                </w:rPr>
                <w:t>第一节数控机床及其分类</w:t>
            </w:r>
        </w:p>
        <w:p>
           <w:r>
               <w:drawing>
                   <wp:inline distT=″0″distB=″0″distL=″0″distR=″0″>
                      <wp:extent cx=″373800″cy=″373800″></wp:extent>
                      <wp:effectExtent l=″0″t=″0″r=″0″b=″0″></wp:effectExtent>
                      <wp:docPr id=″11″name=″Image0001.jpeg″></wp:docPr>
                      <wp:cNvGraphicFramePr>
                         <a:graphicFrameLocks noChangeAspect=″1″
xmlns:a=″http://schemas.openxmlformats.org/drawingml/2006/main″></a:graphicFrameLock
s>
                           </wp:cNvGraphicFramePr>
                           <a:graphic
xmlns:a=″http://schemas.openxmlformats.org/drawingml/2006/main″>
                              <a:graphicData
uri=″http://schemas.openxmlformats.org/drawingml/2006/picture″>
                                  <pic:pic
xmlns:pic=″http://schemas.openxmlformats.org/drawingml/2006/picture″>
                                      <pic:nvPicPr>
                                          <pic:cNvPr id=″0″
name=″Image0001.jpeg″></pic:cNvPr>
                                          <pic:cNvPicPr></pic:cNvPicPr>
                                      </pic:nvPicPr>
                                      <pic:blipFill>
                                          <a:blip r:embed=″rId11″></a:blip>
                                          <a:stretch>
                                              <a:fillRect></a:fillRect>
                                          </a:stretch>
                                      </pic:blipFill>
                                      <pic:spPr>
                                          <a:xfrm>
                                              <a:off x=″0″y=″0″></a:off>
                                              <a:ext cx=″373800″cy=″373800″></a:ext>
                                          </a:xfrm>
                                          <a:prstGeom prst=″rect″>
                                              <a:avLst></a:avLst>
                                          </a:prstGeom>
                                      </pic:spPr>
                                  </pic:pic>
                              </a:graphicData>
                          </a:graphic>
                       </wp:inline>
                    </w:drawing>
                </w:r>
            </w:p>
            <w:tbl>
                <w:tblPr>
                   <w:tblStyle w:val=″a3″></w:tblStyle>
                   <w:tblW w:w=″0″w:type=″auto″></w:tblW>
                </w:tblPr>
                <w:tblGrid></w:tblGrid>
                <w:tr>
                    <w:trPr></w:trPr>
                    <w:tc>
                        <w:tcPr>
                            <w:tcW></w:tcW>
                        </w:tcPr>
                        <w:p>
                            <w:r>
                        <w:rPr>
                            <w:rFonts w:ascii=″″w:hAnsi=″″w:eastAsia=″″w:hint=″
宋体″></w:rFonts>
                        </w:rPr>
                        <w:t>相对加工性等级</w:t>
                    </w:r>
                </w:p>
            </w:tc>
            <w:tc>
                <w:tcPr>
                    <w:tcW></w:tcW>
                </w:tcPr>
                <w:p>
                   <w:r>
                      <w:rPr>
                          <w:rFonts w:ascii=″″w:hAnsi=″″w:eastAsia=″″w:hint=″
宋体″></w:rFonts>
                      </w:rPr>
                      <w:t>代表性材料</w:t>
                  </w:r>
              </w:p>
         </w:tc>
    </w:tr>
    <w:tr>
        <w:trPr></w:trPr>
        <w:tc>
            <w:tcPr>
                <w:tcW></w:tcW>
            </w:tcPr>
            <w:p>
               <w:r>
                   <w:rPr>
                       <w:rFonts w:ascii=″″w:hAnsi=″″w:eastAsia=″″w:hint=″
宋体″></w:rFonts>
                   </w:rPr>
                   <w:t>8</w:t>
               </w:r>
           </w:p>
     </w:tc>
    <w:tc>
        <w:tcPr>
            <w:tcW></w:tcW>
        </w:tcPr>
        <w:p>
           <w:r>
               <w:rPr>
                   <w:rFonts w:ascii=″″w:hAnsi=″″w:eastAsia=″″w:hint=″
宋体″></w:rFonts>
                            </w:rPr>
                            <w:t>钛合金,</w:t>
                        </w:r>
                    </w:p>
                </w:tc>
            </w:tr>
        </w:tbl>
    </w:body>
    <Relationships>
        <Relationship Id=″rId11″
Type=″http://schemas.openxmlformats.org/officeDocument/2006/relationships/image″
Target=″media/Image0001.jpeg″
xmlns=″http://schemas.openxmlformats.org/package/2006/relationships″></Relationship>
    </Relationships>
             </w:document>
最后,对组件更新的模板中的所有文件夹和文件进行压缩,从而生成最终的word文档,如图9所示。由于在以上根据原文档生成的xml文件中没有描述图像位置、段落位置以及段落字体字号,所以在生成word文档时没有保留这些属性。当然,也可以根据需要在该xml文件中对图像位置等属性进行描述,从而保留所需要的属性。
从这个示例可看出,根据word模板创建好样式表之后,可将任意格式的数据快速地转换为具有该格式的word文档。类似地,如果要生成任何其它开放格式的文档,都可利用样式表文件进行转换。在创建样式表时,只要使其转换后结构符合所要生成的文档格式的规范即可。
相应地,本发明提供一种利用结构化数据快速生成word文档的系统。如图10所示,该系统包括:数据输入单元10,输入任意格式的数据,并将该数据发送给处理单元20;处理单元20,将从数据输入单元20接收的数据生成规范的结构化数据,再将该结构化数据生成符合开放格式规范的文档,并将所生成的文档发送给文档输出单元30;文档输出单元30,输出从处理单元20接收的word文档。
其中,处理单元20包括:设计单元22,设计用于规范所述结构化数据的规范化文件(即,schenma或DTD文件)、用于将所述结构化数据转换为所用开放格式文档的模板组件的样式表文件以及符合所述结构化数据的样式的模板,并将规范化文件发送给结构化单元21,将样式表文件发送给内部资源转换单元23,将所设计的模板中的所有组件发送给文档模板存储单元25;结构化单元21,将从数据输入单元10接收的数据生成规范的结构化数据,并将该结构化数据发送给内部资源转换单元23和外部资源转换单元24;内部资源转换单元23,利用样式表文件将从结构化单元接收的结构化数据转换为所用开放格式文档的模板组件,并用这些组件替换模板存储单元25中的相应子单元中;外部资源转换单元24,将从结构化单元21接收的结构化数据中的嵌入资源加载到模板存储单元25中的资源子单元中;模板存储单元,存储从设计单元22接收的模板组件,包括与文档模板中各个组件对应的子单元;文档成品单元26,在外部资源转换单元24和内部资源转换单元23处理完之后,从模板存储单元25读取文档模板中的所有组件,并根据这些组件生成符合所用开放格式的文档,最后将该文档发送给文档输出单元。
如果要生成word 2007文档,设计单元21利用符合OOXML规范的空白word文档创建word模板之后,将word模板解压以获得word模板中的所有组件,并将这些组件发送到模板存储单元25中的对应子单元中;内部资源转换单元23将所述结构化数据转换为word文档的OOXML组件,并用这些OOXML组件替换模板存储单元25中的相应子单元中存储的内容,同时将该结构化数据中的嵌入资源加载到模板存储单元25中的资源子单元中;文档成品单元26对模板存储单元25中的所有子单元中存储的内容进行压缩,并将生成的压缩文档的后缀名修改为word后缀名,从而生成符合OOXML规范的word文档。
通过这个系统,对于某一特定格式的开放格式文档,利用系统预先根据该格式创建好的schema或DTD文件和xslt样式表,就能够自动地、快速地将任意格式的数据生成具有该格式的文档,而不需要该格式文档所对应的应用程序。
从以上描述可看出,本发明将任意格式的数据转换为结构化数据,即,xml文件,然后应用样式表将该结构化数据转换为对应的模板组件,并用这些模板组件替换所创建文档模板中的相应组件,同时将嵌入资源加载到文档模板中的资源目录中,从而完成对文档模板的更新和加载,再根据该模板生成最终的开放格式文档。该方法不要求计算机安装开放格式文档所对应的应用程序,不受应用程序接口的限制,可在占用较少系统资源的情况下快速地将任意格式的数据生成开放格式文档。同时,由于对于嵌入资源直接进行格式转换和拷贝,从而保留了嵌入资源的原有属性,比如图片的精度。
以上参考实施例描述了本发明。但是,本领域的技术人员应该理解,本发明不限于所公开的实施例,在不脱离本发明的基本原理的情况下,任何类似的修改、替换或变形都应包括在本发明的保护范围内。

Claims (12)

1.一种快速生成开放格式文档的方法,包括以下步骤:
(1)将任意格式的数据生成规范的结构化数据;
(2)利用开放格式的空白文档创建符合所述结构化数据的样式的文档模板,并将该文档模板中的所有组件保存到模板目录下;
(3)将结构化数据转换为对应的模板组件,并用这些模板组件替换模板目录下的相应组件,同时将结构化数据中的嵌入资源加载到模板目录下的资源组件中;
其中,加载嵌入资源包括以下步骤:
判断所述结构化数据中是否含有链接资源或者以数据流形式存在的资源,如果有这些资源,则执行以下步骤:
对于数据流,首先将该数据流转换为资源文件;
判断链接资源或者数据流经过转换而生成的资源的格式是否符合格式规范,如果符合格式规范,则将该资源直接拷贝到模板目录下的资源组件中,如果不符合格式规范,则将该资源的格式转换为能被所用开放格式文档的应用程序解析的格式,然后将转换的资源拷贝到模板目录下的资源组件中;
(4)根据更新的模板目录下的所有组件生成符合所用开放格式的文档。
2.根据权利要求1所述的方法,其特征在于,所述开放格式的文档模板中的组件为xml组件,所述结构化数据为xml文件。
3.根据权利要求2所述的方法,其特征在于,所述步骤(1)包括以下步骤:
制定用于规范xml数据的Schema或DTD文件;
采集所述任意格式的数据生成xml文件,并利用所制定的Schema或DTD文件对该xml文件进行规范性验证,以使所生成的xml文件符合所制定的结构化规范。
4.根据权利要求1或2所述的方法,其特征在于,在步骤(2)中创建文档模板时,在文档模板中加入所述结构化数据中所包含的文字、图片、表格、数学公式的附加信息,这些附加信息表示文字、图片、表格、数学公式的样式。
5.根据权利要求2所述的方法,其特征在于,在步骤(3)中,利用XSLT转换技术或其它xml转换技术创建用于将所述结构化数据中所包含的文字、图片、表格、数学公式转换为对应的模块组件的样式表文件,并通过该样式表来将所述结构化数据中所包含的这些元素转换为对应的模板组件。
6.根据权利要求2所述的方法,其特征在于,所述开放格式文档为符合OOXML规范的word文档,
在这种情况下,在步骤(2)中,利用符合OOXML规范的空白word文档创建word模板之后,将word模板解压到指定的临时目录下,接着,在步骤(3)中,将所述结构化数据转换为OOXML组件,并用这些OOXML组件替换word模板解压目录下的相应组件,同时将该结构化数据中的嵌入资源加载到word模板解压目录下的资源目录中,最后,在步骤(4)中,对word模板解压目录下的所有文件夹和文件进行压缩,并将生成的压缩文档的后缀名修改为word后缀名,从而生成符合OOXML规范的word文档。
7.一种快速生成开放格式文档的系统,包括:
数据输入单元,输入任意格式的数据,并将该数据发送给处理单元;
处理单元,将从数据输入单元接收的数据生成规范的结构化数据,再将该结构化数据生成符合开放格式规范的文档,并将所生成的文档发送给文档输出单元;
文档输出单元,输出从处理单元接收的文档,
其中,所述处理单元包括:
设计单元,设计用于规范所述结构化数据的规范化文件、用于将所述结构化数据转换为所用开放格式文档的模板组件的样式表文件以及符合所述结构化数据的样式的模板,并将规范化文件发送给结构化单元,将样式表文件发送给内部资源转换单元,将所设计的模板中的所有组件发送给模板存储单元;
结构化单元,将从数据输入单元接收的数据生成规范的结构化数据,并将该结构化数据发送给内部资源转换单元和外部资源转换单元;
内部资源转换单元,利用样式表文件将从结构化单元接收的结构化数据转换为所用开放格式文档的模板组件,并用这些组件替换模板存储单元中的相应子单元;
外部资源转换单元,将从结构化单元接收的结构化数据中的嵌入资源加载到模板存储单元中的资源子单元中;所述外部资源转换单元还用于判断所述结构化数据中是否含有链接资源或者以数据流形式存在的资源,如果有这些资源,则对于数据流,首先将该数据流转换为资源文件,判断链接资源或者数据流经过转换而生成的资源的格式是否符合格式规范,如果符合格式规范,则将该资源直接拷贝到模板存储单元中的资源子单元中,如果不符合格式规范,则将该资源的格式转换为能被所用开放格式文档的应用程序解析的格式,然后将转换的资源拷贝到模板存储单元中的资源子单元中;
模板存储单元,存储从设计单元接收的模板组件,包括与文档模板中各个组件对应的子单元;
文档成品单元,在外部资源转换单元和内部资源转换单元处理完之后,从模板存储单元读取文档模板中的所有组件,并根据这些组件生成符合所用开放格式的文档,最后将该文档发送给文档输出单元。
8.根据权利要求7所述的系统,其特征在于,所述开放格式的文档模板中的组件为xml组件,所述结构化数据为xml文件。
9.根据权利要求8所述的系统,其特征在于,所述设计单元设计用于规范xml数据的Schema或DTD文件,所述结构化单元根据从设计单元接收的Schema或DTD文件将从数据输入单元接收的数据生成规范的结构化数据。
10.根据权利要求7所述的系统,其特征在于,所述设计单元在创建文档模板时,在文档模板中加入所述结构化数据中所包含的文字、图片、表格、数学公式的附加信息,这些附加信息表示文字、图片、表格、数学公式的样式。
11.根据权利要求8所述的系统,其特征在于,所述设计单元利用XSLT转换技术或其它xml转换技术创建用于将所述结构化数据中所包含的文字、图片、表格、数学公式转换为对应的模块组件的样式表文件。
12.根据权利要求8所述的系统,其特征在于,所述开放格式文档为符合OOXML规范的word文档,
在这种情况下,设计单元利用符合OOXML规范的空白word文档创建word模板之后,将word模板解压以获得word模板中的所有组件,并将这些组件发送到模板存储单元中的对应子单元中;内部资源转换单元将所述结构化数据转换为OOXML组件,并用这些OOXML组件替换模板存储单元中的相应子单元中存储的内容,同时将该结构化数据中的嵌入资源加载到模板存储单元中的资源子单元中;文档成品单元对模板存储单元中的所有子单元中存储的内容进行压缩,并将生成的压缩文档的后缀名修改为word后缀名,从而生成符合OOXML规范的word文档。
CN200910242832A 2009-12-17 2009-12-17 一种快速生成开放格式文档的方法及系统 Expired - Fee Related CN102103573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910242832A CN102103573B (zh) 2009-12-17 2009-12-17 一种快速生成开放格式文档的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910242832A CN102103573B (zh) 2009-12-17 2009-12-17 一种快速生成开放格式文档的方法及系统

Publications (2)

Publication Number Publication Date
CN102103573A CN102103573A (zh) 2011-06-22
CN102103573B true CN102103573B (zh) 2012-10-03

Family

ID=44156352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910242832A Expired - Fee Related CN102103573B (zh) 2009-12-17 2009-12-17 一种快速生成开放格式文档的方法及系统

Country Status (1)

Country Link
CN (1) CN102103573B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855244B (zh) * 2011-06-28 2015-02-25 北大方正集团有限公司 文档目录处理方法和装置
CN102289500A (zh) * 2011-08-24 2011-12-21 浙江大学 一种病理切片多粒度医学信息显示方法和系统
CN104572744B (zh) * 2013-10-23 2018-12-25 北大方正集团有限公司 结构化文档生成方法和装置
CN103617558A (zh) * 2013-11-11 2014-03-05 贵阳供电局 一种电压管理报告生成方法
CN104679726A (zh) * 2013-12-03 2015-06-03 北大方正集团有限公司 Word文件的排版方法和装置
CN103927296A (zh) * 2014-03-06 2014-07-16 广东电网公司电网规划研究中心 输变电工程word文档段落内容中工程特性指标的智能提取方法
CN103984773B (zh) * 2014-06-05 2018-06-19 南京信息工程大学 一种多格式天气雷达基数据文件转NetCDF文件方法
CN104156207A (zh) * 2014-07-31 2014-11-19 广州金山网络科技有限公司 一种文档显示方法以及装置
CN106126489A (zh) * 2016-06-23 2016-11-16 江苏中威科技软件系统有限公司 一种报告文件动态图表编辑方法及系统
CN106227712A (zh) * 2016-07-28 2016-12-14 浪潮通用软件有限公司 一种基于可扩展标记语言实现数据快速换转文档的方法
CN108268791A (zh) * 2016-12-30 2018-07-10 珠海金山办公软件有限公司 一种外发文档的制作方法及装置
CN107291673A (zh) * 2017-05-19 2017-10-24 广州视源电子科技股份有限公司 一种文档的处理方法、系统、可读存储介质及计算机设备
CN109815450A (zh) * 2017-11-20 2019-05-28 北大方正集团有限公司 XML文件转换Word文件的方法及装置
CN109960785A (zh) * 2017-12-25 2019-07-02 顺丰科技有限公司 文件在线签署方法、装置、存储介质及设备
CN110196965B (zh) * 2018-02-26 2021-04-09 北大方正集团有限公司 XML文件转换Word文件的方法及装置
CN109144656B (zh) * 2018-09-17 2022-03-08 广州视源电子科技股份有限公司 多元素布局的方法、装置、计算机设备和存储介质
CN109375972B (zh) * 2018-09-17 2022-03-08 广州视源电子科技股份有限公司 多元素布局的方法、装置、计算机设备和存储介质
CN109815447B (zh) * 2019-01-10 2023-05-12 浙江小泰科技有限公司 一种Word表单Schema处理系统
CN110119502A (zh) * 2019-05-13 2019-08-13 江西金格科技股份有限公司 一种基于ofd文档实现动态表单域的方法
CN110458471B (zh) * 2019-08-19 2022-05-20 绍兴数纺科技有限公司 标准化染料信息管理系统
CN110569488A (zh) * 2019-08-28 2019-12-13 福建威盾科技集团有限公司 一种基于xml标记语言的模块化模板word生成方法
CN111125441A (zh) * 2019-11-08 2020-05-08 广东电网有限责任公司 一种Xml文件信息处理系统
CN112966485B (zh) * 2021-03-09 2024-04-12 中建八局轨道交通建设有限公司 基于文字处理程序的文案排版方法及系统
CN113191719A (zh) * 2021-04-01 2021-07-30 北京优易惠技术有限公司 招投标领域的文件处理方法及系统
CN113255302A (zh) * 2021-06-22 2021-08-13 金蝶软件(中国)有限公司 组织架构图操作方法、计算机设备及计算机存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499162A (zh) * 2009-03-05 2009-08-05 唐文超 医学科研数据管理系统及其方法
CN101556577A (zh) * 2008-04-11 2009-10-14 北京闻言科技有限公司 一种使用xml文件将文档与程序代码组织在一起的办法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101556577A (zh) * 2008-04-11 2009-10-14 北京闻言科技有限公司 一种使用xml文件将文档与程序代码组织在一起的办法
CN101499162A (zh) * 2009-03-05 2009-08-05 唐文超 医学科研数据管理系统及其方法

Also Published As

Publication number Publication date
CN102103573A (zh) 2011-06-22

Similar Documents

Publication Publication Date Title
CN102103573B (zh) 一种快速生成开放格式文档的方法及系统
US7627592B2 (en) Systems and methods for converting a formatted document to a web page
RU2422889C2 (ru) Определяющие поля для представляемых файлов и схемы расширяемого языка разметки для библиографий и цитирования
CN102103591B (zh) 一种利用结构化数据实现文档内容自动更新的方法及系统
CN113961531B (zh) 多格式文件合并为一个ofd文件的方法及装置
US8307008B2 (en) Creation and management of electronic files for localization project
CN103309849A (zh) 一种基于OpenXML的docx文档创建和修改方法
JPWO2007081017A1 (ja) 文書処理装置
KR101480033B1 (ko) 임의의 웹 브라우저 기반에서 복사 및 붙여넣기를 지원하는 문서 편집 장치
CN101866331A (zh) 不同语种xml文档的转换方法及装置
Mironov et al. Stream handling large volume documents in situationally oriented databases
CN116303359A (zh) 一种数据库结构多类型文档导出的实现方法
KR101251686B1 (ko) 표시 가능 파일의 필드 및 참조 문헌 및 인용문에 대한확장형 마크업 언어 스키마의 결정
US8429118B2 (en) Embedding and retrieving data in an application file format
Pandey et al. Version aware libreoffice documents
CN100559369C (zh) 同时满足格式和内容分离与混排需求的文档记录方法
Veeraraghavan et al. Fidelity-aware replication for mobile devices
JP5707937B2 (ja) 電子文書変換装置及び電子文書変換方法
CN104063386B (zh) 一种内容对象复用的方法和装置
Da et al. Program design of JSON to structured data conversion
Haehnert Critical Editions and the Promise of the Digital: The Development and Limitations of Markup
Anand et al. Mapping XML instances
CN116822467A (zh) 一种电子证照版面续页的方法
CN102831228A (zh) 一种异构可扩展置标语言文档的格式转换方法
Mendes et al. Extracting output schemas from XSLT stylesheets and their possible applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220622

Address after: 3007, Hengqin international financial center building, No. 58, Huajin street, Hengqin new area, Zhuhai, Guangdong 519031

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: BEIJING FOUNDER ELECTRONICS Co.,Ltd.

Address before: 100871, Beijing, Haidian District, Cheng Fu Road, No. 298, Zhongguancun Fangzheng building, 5 floor

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: BEIJING FOUNDER ELECTRONICS Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121003