C#: docx генерируется из html с помощью открытых xml электроинструментов throw pre release 2007 - PullRequest
0 голосов
/ 24 января 2020

Я пишу код, который получает содержимое файла Docx как HTML с помощью открытых XML электроинструментов, и теперь я хочу преобразовать его обратно в другой файл docx. шаг, который получает содержимое как HTML, работает нормально, но когда я генерирую файл docx из этого HTML, файл не может быть открыт и выдает эту ошибку

этот файл был создан в предварительной версии версия слова 2007 и не может быть открыта в этой версии

HTML, сгенерированный из тестового документа, -

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta
      charset="UTF-8" />
    <title>My Page Title</title>
    <meta
      name="Generator"
      content="PowerTools for Open XML" />
    <style>span { white-space: pre-wrap; }
p.pt-Normal {
    line-height: 107.9%;
    margin-bottom: 8pt;
    text-align: justify;
    font-family: ;
    font-size: 11pt;
    margin-top: 0;
    margin-left: 0;
    margin-right: 0;
}
span.pt-DefaultParagraphFont {
    font-family: ;
    font-size: 11pt;
    font-style: normal;
    font-weight: normal;
    margin: 0;
    padding: 0;
}
span.pt-DefaultParagraphFont-000000 {
    font-family: Calibri;
    font-size: 11pt;
    font-style: normal;
    font-weight: normal;
    margin: 0;
    padding: 0;
}
</style>
  </head>
  <body>
    <div>
      <p
        dir="rtl"
        class="pt-Normal">&#x200f;<span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f;با سلام خدمت &#x200f;</span><span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f;&lt;&lt;&#x200f;</span><span
          class="pt-DefaultParagraphFont-000000">&#x200e;PERSONS.lname&#x200e;</span><span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f;&gt;&gt;&#x200f;</span><span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f; &#x200f;</span><span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f;&lt;&lt;&#x200f;</span><span
          class="pt-DefaultParagraphFont-000000">&#x200e;PERSONS.fname&#x200e;</span><span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f;&gt;&gt;&#x200f;</span></p>
      <p
        dir="rtl"
        class="pt-Normal">&#x200f;<span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f;مدیر محترم &#x200f;</span><span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f;&lt;&lt;&#x200f;</span><span
          class="pt-DefaultParagraphFont-000000">&#x200e;OFFICE.name&#x200e;</span><span
          lang="fa-IR"
          class="pt-DefaultParagraphFont">&#x200f;&gt;&gt;&#x200f;</span></p>
    </div>
  </body>
</html>

и мой код для сохранения вышеуказанного html как документа

1011 *

1 Ответ

1 голос
/ 25 января 2020

Ответ прост. Вы не должны вставлять HTML содержимое в MainDocumentPart, поскольку ожидается, что оно содержит действительный элемент Open XML w:document, например, как следующий упрощенный элемент:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <w:body>
    <w:p>
      <w:r>
        <w:t>Hello, world!</w:t>
      </w:r>
    </w:p>
  </w:body>
</w:document>

Сообщение об ошибке, вероятно, немного вводит в заблуждение. HTML в этом случае просто недопустим.

В зависимости от того, изменили ли вы HTML после его создания (с помощью Open XML PowerTools) из исходного документа Word, вам придется либо преобразовать его обратно в допустимую разметку Open XML (если вы ее изменили) или просто использовать разметку Open XML из исходного документа Word.

...