如何将Word转换为与Word打印格式相同的HTML

问题描述 投票:1回答:1

我正在将.doc文件转换为HTML文件,并且工作正常,但是我需要实现的一件事是HTML文件的格式必须与“打印版式”中Word文件的格式相同“格式。

如果我能以某种方式将页脚信息(即每页的页码)添加到转换后的HTML文件中,那么我的工作就会完成。

Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();

        oWord.Documents.Open(ref FileName, ref ReadOnly, ref MissingType,
                                       ref MissingType, ref MissingType, ref MissingType,
                                       ref MissingType, ref MissingType, ref MissingType,
                                       ref MissingType, ref IsVisible, ref MissingType,
                                       ref MissingType, ref MissingType, ref MissingType,
                                       ref MissingType);
 var oWordDoc = oWord.ActiveDocument;
        oWordDoc.SaveAs(ref HtmlDirectoryPath, ref DocumentFormat, ref MissingType, ref MissingType,
            ref MissingType, ref MissingType, ref MissingType, ref MissingType, ref MissingType,
            ref MissingType, ref MissingType, ref MissingType, ref MissingType, ref MissingType,
            ref MissingType, ref MissingType);

[当我看到HTML文件时,它与Word的“ Web布局”模式相同,我不需要。

我正在使用C#和Microsoft.Office.Interop.Word库进行此转换。

Update 1:您可以看到三种查看Word文档文件的模式-读取模式,打印布局和Web布局。但是,当我使用上述代码转换文件时,生成的HTML文件内容与Word文档的Web布局模式相同。因此,当某人去阅读该HTML文件并想向起草文档的人报告一些错误或错误时,日期是不正确的,而您必须对其进行更新,那么就不知道在哪一页确切的错误/错误是。因为以HTML格式显示,所以不会显示任何页面信息。

因此,我的工作是根据逐页将一些页面信息添加到转换后的HTML中,以便验证者可以轻松地告诉起草者我已经遍历了文件,并且在X号页面上进行了日期更正。

我试图将页码添加到文档页脚中,但是当我将其转换为HTML时,没有页脚信息会随之转换。

c#-4.0 office-interop
1个回答
0
投票

这是一个很老的问题,但对于某些人来说可能仍然很重要。

HTML默认情况下没有页面的概念,但是可以通过使用Word部分来实现,Word部分默认情况下会转换为HTML,作为易于访问的元素(来自C#和HTML / CSS)。

不幸的是,Word部分不会在每页末尾添加,而是仅在下一页具有其他设置(页边距布局等)时才手动添加,并且可能很少添加其他情况。

您可以手动或以编程方式在Word中添加分节符。要以编程方式进行操作,可以转到最后一页(第一行代码),效果很好。然后添加分节符并转到每页的上一页(for循环的第1和2nd代码行),从最后一页开始,在第二个结束:

YourWordApp.Selection.GoTo(Word.WdGoToItem.wdGoToPage, Word.WdGoToDirection.wdGoToLast);
for (int pageNum = pageCount; pageNum >= 2 ; pageNum--)
{
   YourWordApp.Selection.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous);
   YourWordApp.Selection.GoToPrevious(Word.WdGoToItem.wdGoToPage);
}

您可以使用其他任何适合您需要的分节符(来自Word.WdBreakType。)>

您可以通过以下方式获得pageCount:

int pageCount = YourWordDoc.Content.Information[Word.WdInformation.wdNumberOfPagesInDocument];

您可以从开始(第二页)到结束进行迭代,对于某些文档来说可能会比较混乱(对于更多空行而言),而对于其他文档来说则可能会少一些混乱。

[您可能还希望(在您的文档中不会太乱)在页面末尾添加分节符-然后,您必须从第一页到倒数第二页进行迭代。

此方法将为您提供一些强制使用HTML的Word页面的功能,但是仅当您只有一个部分时才起作用-文档中没有节中断]

,这是不可能的。 如果您有多个部分,而不仅仅是一个(至少一个分节符),您将不得不以某种方式处理它们-删除它们(不删除其内容)或与之前步骤中添加的内容区分开,并在下一个。此外-它几乎总是将某些内容移到上一页/下一页,因此最终编号可能与原始编号不同。

[当您获得页面时,只需在末尾插入一些div或其他元素保留编号或在每一节的开头处进行编号,然后为这些元素赋予唯一的类-设置其格式样式即可-使其可以清晰地标识为编号。

如果您希望以更好的方式或通过更多方式获得页脚,则只需编号-您可能会发现mvark blog post有用。

© www.soinside.com 2019 - 2024. All rights reserved.