在 Word 文档中添加和删除信头

在 Word 文档中添加和删除信头

我们公司有信头纸(印有我们标志的预印纸)。每当我们通过邮件发送东西时,我们都会将其打印在纸上。但是,当我们通过电子邮件发送相同的文档时,我们会将其转换为 PDF 文件。

现在的问题是:将 Word 文档转换为 PDF 时,它应该包含信头。将同一份文档打印在纸上时,它不应该包含信头(否则信头将被打印两次)。

目前,我们使用两个不同的 Word 文档模板 - 一个带有信头,一个不带。因此,每当我们想要添加或删除信头时,我们都必须使用另一个模板创建一个新文档,然后复制并粘贴所有内容。糟糕的解决方案。我正在寻找一些简单的方法来打开和关闭信头。

到目前为止我已经尝试过:

  • 切换模板:似乎没有简单的方法来切换现有文档的模板。
  • 使用图片水印:我们的信头一直延伸到页面的边框。(当然,没有打印机支持这一点,但导出为 PDF 是没问题的。)显然,根据当前的默认打印机,Word 不允许无边框水印,而是会移动图像。
  • 使用页眉:编辑页眉时,我可以在任意位置插入图片,这很棒。但是,我找不到一种方法(没有宏)来启用/禁用页眉中的图片。(文本应该保留在那里。)

答案1

您可以尝试根据文档属性(例如类别)在标题中使用条件文本。如果您在类别中输入“PDF”,则将打印标题,如果您将其删除,则标题将消失。

尝试这个简单的例子:

{IF {DOCPROPERTY Category}="PDF" "This is the header text..." ""}

我不确定如何提取打印阶段使用的打印机名称,但至少这可以简化事情。

答案2

作为一名软件开发人员,我最终选择了编程解决方案,并使用 C# 开发了自定义 Word 功能区。

我意识到对于非开发人员来说这不是一个令人满意的答案,但不幸的是,我无法将插件附加到此消息中。但是,如果您可以联系程序员,这应该可以帮助他入门:

private static void ShowHeaderImages(bool show) {
  foreach (Section section in WordDoc.Sections) {
    foreach (HeaderFooter header in section.Headers) {
      foreach (Shape shape in header.Shapes) {
        bool isGraphic =
          shape.Type == MsoShapeType.msoPicture ||
          shape.Type == MsoShapeType.msoLinkedOLEObject;
        if (isGraphic) {
          shape.Visible = show ? MsoTriState.msoTrue : MsoTriState.msoFalse;
        }
      }
    }
  }
}

请注意,虽然这是 C# 代码,但它可以很容易地转换为 VBA 宏。

相关内容