CSS打印模式:如何在生成的Word文档的第一页显示页眉和页脚

7
我成功地使用带有在CSS打印模式下样式化的页眉和页脚的HTML代码生成了Word文档,以下是我的代码: ```html

我成功地使用带有在CSS打印模式下样式化的页眉和页脚的HTML代码生成了Word文档,以下是我的代码:

```
<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'>
<head><title>Mon document</title>
<meta charset=\"UTF-8\" />
<!--[if gte mso 9]>
<xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom><w:DoNotOptimizeForBrowser/></w:WordDocument></xml>
<![endif]-->
<link rel=File-List href=\"mydocument_files/filelist.xml\">
<style><!-- 
@page
{
    size:21cm 29.7cmt;  /* A4 */
    margin:1cm 1cm 1cm 1cm; /* Margins: 2.5 cm on each side */
    mso-page-orientation: portrait;  
    mso-header: url(\"mydocument_files/headerfooter.htm\") h1;
    mso-footer: url(\"mydocument_files/headerfooter.htm\") f1;  
}
@page Section1 { }
div.Section1 { page:Section1; }
p.MsoHeader, p.MsoFooter { border: none; }
--></style>
</head>
<body>
<div class=Section1>
 my content
</div>
</body>
</html>

我希望做的是仅在第一页上显示页眉和页脚。 为此,我尝试将visibility:hidden应用于除第一页外的其他页面的页眉和页脚,方法如下:
p.MsoHeader, p.MsoFooter { border: none; visibility: hidden;}
p.MsoHeader :first, p.MsoFooter :first { border: none; visibility: visible;}

但是页眉和页脚仍然显示在所有页面上... 有什么办法可以做到这一点吗?

尝试在Word中创建一个简单的示例文档,并激活“页眉/页脚”的“首页”选项 - 这是Word中的一个特定选项。然后将其另存为“往返”HTML文件,查看Word想让您使用的内容。 - Cindy Meister
我已经尝试过这个,但是我得到的区别是大量的mso-list-id标签...我没有看到任何有关页眉页脚的不同之处,尽管我在notepad ++中使用了比较插件。 - Vincent Teyssier
2
页眉/页脚与节相关联。该文档可能只有一个节,其定义通常位于文档末尾附近。也许这能帮到您找到它? - Cindy Meister
Cindy Meister是正确的。Word根据分节符处理页眉和页脚。这就是为什么你会遇到无法取消“链接到上一节”的错误。创建一个包含多个页面并确保创建分节的文档,然后查看代码,你将看到它如何处理每个部分。然后相应地添加CSS。 - Blizzardengle
是的,我知道,但是我没有找到任何可以引导我解决问题的东西。差异如下:mso-title-page:yes;(但我没有找到任何关于这个的文档),而ms-list-id/mso-list-template-ids则出现了十几次。 - Vincent Teyssier
好的,实际上我在生成HTML代码的中间漏掉了一个重要的点。通过让我重新比较,最终我找到了答案。非常感谢。 - Vincent Teyssier
2个回答

2
试试这个:
p.MsoHeader, p.MsoFooter { border: none; display: none;}
p.MsoHeader :first, p.MsoFooter :first { border: none; display: block;}

或者,如果这种方法行不通,最好不要在首次调用时调用页眉和页脚,只需从不需要页眉和页脚的页面中删除这两行:

mso-header: url(\"mydocument_files/headerfooter.htm\") h1;
mso-footer: url(\"mydocument_files/headerfooter.htm\") f1; 

已经有一个100%可行的答案了,你的回答开头不起作用,第二部分也离题了。 - Vincent Teyssier

1

当比较Word生成的HTML时,我错过了一个关键的mso CSS标签:

mso-first-header: url ...

使用mso-header不如这样做。

同时,属性mso-title-page也必须设置为yes

通过结合这两个属性,您可以获得所需的效果!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接