首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Word转换为与Word打印格式相同的HTML格式

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

Stack Overflow用户
提问于 2016-05-05 11:24:49
回答 1查看 1.2K关注 0票数 1

我正在将一个.doc文件转换成一个HTML,这是非常好的,但是我需要实现的一件事是,该HTML文件的格式必须与Word文件的“打印布局”格式相同。

如果我可以在转换后的HTML文件中添加页脚信息(即每个页面的页码),那么我的工作就完成了。

代码语言:javascript
复制
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库进行此转换。

更新1:如您所见,有三种模式可以查看Word文档文件--读取模式、打印布局和网页布局。但是,当我使用上述代码转换文件时,生成的HTML文件内容与Word文档的Web布局模式相同。所以当有人去读那个HTML文件时,想把一些错误或错误报告给起草文档的人,告诉他有一个不正确的日期,你必须更新它,那么就不知道错误/错误到底在哪一页上。因为在HTML格式中没有显示页面信息。

因此,我的工作是根据页面添加一些页面信息到转换后的HTML中,这样验证器就可以很容易地告诉起草人员我已经看过该文件,并且在第X页上有一个日期更正。

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

EN

回答 1

Stack Overflow用户

发布于 2020-02-25 15:22:29

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

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

不幸的是,Word部分不会在每一页结束后添加,但只有当下一页有其他设置(边距、布局等)时,才手动添加,而且可能很少有其他情况。

您可以手动或编程地在Word中添加分段中断。要通过编程实现它,它可以很好地工作,方法是转到最后一页(第1代码行);然后为每个页面添加分段中断并转到前一页( for循环中的第1和第2段代码行),从最后开始到第二页结束:

代码语言:javascript
复制
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:

代码语言:javascript
复制
int pageCount = YourWordDoc.Content.Information[Word.WdInformation.wdNumberOfPagesInDocument];

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

您也可能更喜欢(对您的文档来说可能不那么混乱)在页面末尾添加分段中断-然后您将不得不从第一页到下一页迭代。

这个方法会给你一些在HTML中影响单词页面的内容,但是只有当你只有一个部分时,才能工作--文档中没有断节,这是不可能的。--如果您有更多的部分,而不仅仅是一个部分(至少一个区段中断),您将不得不以某种方式处理它们--删除它们(而不删除它们的内容),或者区别于前面步骤中添加的部分,然后在下一个步骤中经过它们。而且--它几乎总是将某些内容移到上一页/下一页,因此最终编号可能与原始的.不同。

当您有页面时,您可以通过在每个部分的末尾安装一些div或其他保持编号的元素来获得您的编号,并给这些元素以独特的类--在格式样式中嵌入--使它们清楚地被识别为编号。

如果你想以更好的方式或更多的方式得到脚,而不是仅仅编号-你可能会发现mvark博客文章有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37049376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档