从Word文档中删除段落标签只会导致Microsoft Word损坏

时间:2018-08-30 20:32:48

标签: c docx libxml2

我正在使用libxml2和libzip在C语言中打开和编辑Word文档。它大部分都可以工作。当我使用libxml的unlink和free node函数从Word文档中删除运行或段落时,Microsoft Word无法打开文件并声称文件已损坏,但是例如libreoffice之类的其他程序可以打开它。例如,document.xml就是删除前后的样子。

之后:

<w:p w:rsidR="00EB2661" w:rsidRPr="002D26CA" w:rsidRDefault="00EB2661" w:rsidP="00EB2661">
  <w:pPr>
    <w:spacing w:line="240" w:lineRule="auto"/>
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
  </w:pPr>
</w:p>

之前:

<w:p w:rsidR="00EB2661" w:rsidRPr="002D26CA" w:rsidRDefault="00EB2661" w:rsidP="00EB2661">
  <w:pPr>
    <w:pStyle w:val="Heading1"/>
    <w:spacing w:line="240" w:lineRule="auto"/>
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
  </w:pPr>
  <w:r w:rsidRPr="002D26CA">
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
    <w:t xml:space="preserve">INHERENCY</w:t>
  </w:r>
</w:p>
<w:p w:rsidR="00EB2661" w:rsidRPr="002D26CA" w:rsidRDefault="00EB2661" w:rsidP="00EB2661">
  <w:pPr>
    <w:spacing w:line="240" w:lineRule="auto"/>
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
  </w:pPr>
</w:p>

此外,在libreoffice中打开文档,然后在不进行任何修改的情况下将其保存,则Microsoft Word可以将其打开。

libreoffice通过更改document标签,修改了文档

<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:mc="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:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" 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:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se wp14">

收件人:

<w:document xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14 wp14">

在libreoffice的文档主要内容更改之前还有两个标签。 来自:

<w:p w:rsidR="00EB2661" w:rsidRPr="002D26CA" w:rsidRDefault="00EB2661" w:rsidP="00EB2661">
  <w:pPr>
    <w:pStyle w:val="Title"/>
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
  </w:pPr>
  <w:bookmarkStart w:id="0" w:name="_GoBack"/>
  <w:bookmarkEnd w:id="0"/>
</w:p>
<w:p w:rsidR="00EB2661" w:rsidRPr="002D26CA" w:rsidRDefault="00EB2661" w:rsidP="00EB2661">
  <w:pPr>
    <w:spacing w:line="240" w:lineRule="auto"/>
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
  </w:pPr>
  <w:r>
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
    <w:pict>
      <v:rect id="_x0000_i1025" style="width:0;height:1.5pt" o:hrstd="t" o:hr="t" fillcolor="#a0a0a0" stroked="f"/>
    </w:pict>
    <w:t xml:space="preserve"/>
  </w:r>
</w:p>

收件人:

<w:p>
  <w:pPr>
    <w:pStyle w:val="Title"/>
    <w:spacing w:before="240" w:after="120"/>
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
  </w:pPr>
  <w:r>
    <w:rPr>
      <w:rFonts w:cs="Arial" w:ascii="Arial" w:hAnsi="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
    <w:t xml:space="preserve"/>
  </w:r>
  <w:bookmarkStart w:id="0" w:name="_GoBack"/>
  <w:bookmarkStart w:id="1" w:name="_GoBack"/>
  <w:bookmarkEnd w:id="1"/>
</w:p>
<w:p>
  <w:pPr>
    <w:pStyle w:val="Normal"/>
    <w:spacing w:lineRule="auto" w:line="240"/>
    <w:rPr>
      <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
      <w:color w:val="000000" w:themeColor="text1"/>
    </w:rPr>
  </w:pPr>
  <w:r>
    <w:rPr/>
    <mc:AlternateContent>
      <mc:Choice Requires="wps">
        <w:drawing>
          <wp:inline distT="0" distB="0" distL="0" distR="0">
            <wp:extent cx="5944235" cy="19685"/>
            <wp:effectExtent l="0" t="0" r="0" b="0"/>
            <wp:docPr id="1" name=""/>
            <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
              <a:graphicData uri="http://schemas.microsoft.com/office/word/2010/wordprocessingShape">
                <wps:wsp>
                  <wps:cNvSpPr/>
                  <wps:nvSpPr>
                    <wps:cNvPr id="0" name="Rectangle 1"/>
                    <wps:cNvSpPr/>
                  </wps:nvSpPr>
                  <wps:spPr>
                    <a:xfrm>
                      <a:off x="0" y="0"/>
                      <a:ext cx="5943600" cy="19080"/>
                    </a:xfrm>
                    <a:prstGeom prst="rect">
                      <a:avLst/>
                    </a:prstGeom>
                    <a:solidFill>
                      <a:srgbClr val="a0a0a0"/>
                    </a:solidFill>
                    <a:ln>
                      <a:noFill/>
                    </a:ln>
                  </wps:spPr>
                  <wps:bodyPr/>
                </wps:wsp>
              </a:graphicData>
            </a:graphic>
            <wp14:sizeRelH relativeFrom="page">
              <wp14:pctWidth>100000</wp14:pctWidth>
            </wp14:sizeRelH>
          </wp:inline>
        </w:drawing>
      </mc:Choice>
      <mc:Fallback>
        <w:pict>
          <v:rect id="shape_0" fillcolor="#a0a0a0" stroked="f" style="position:absolute;margin-left:0pt;margin-top:-1.55pt;width:467.95pt;height:1.45pt;mso-position-horizontal:left;mso-position-vertical:top">
            <w10:wrap type="none"/>
            <v:fill o:detectmouseclick="t" type="solid" color2="#5f5f5f"/>
            <v:stroke color="#3465a4" joinstyle="round" endcap="flat"/>
          </v:rect>
        </w:pict>
      </mc:Fallback>
    </mc:AlternateContent>
    <w:t xml:space="preserve">100000</w:t>
  </w:r>
</w:p>

除此之外,我没有发现其他变化

未经编辑的原始文件:https://pastebin.com/pd1Cx97D

由我的c程序编辑的文件:https://pastebin.com/MBABRV1w

打开并保存没有任何更改的libre office后的先前文件:https://pastebin.com/9t4vcXm5

0 个答案:

没有答案