У нашей компании есть бумага для бланков (предварительно напечатанная бумага с нашим логотипом). Всякий раз, когда мы отправляем что-либо по почте, мы печатаем это на этой бумаге. Однако, когда мы отправляем тот же документ по электронной почте, мы конвертируем его в файл PDF.

Теперь проблема в том, что при преобразовании документа Word в PDF он должен содержать фирменный бланк. При печати одного и того же документа на бумаге этого делать не следует (иначе фирменный бланк будет напечатан дважды).

В настоящее время мы используем два разных шаблона документов Word - один с бланком, другой без. Поэтому всякий раз, когда мы хотим добавить или удалить бланк, нам нужно создать новый документ с другим шаблоном, а затем скопировать и вставить все. Неприятное решение. Что я ищу, так это какой-то простой способ включать и выключать бланки.

Что я пробовал до сих пор:

  • Переключение шаблона: похоже, не существует простого способа переключения шаблона для существующего документа.
  • Использование водяного знака с изображением: наш фирменный бланк переходит к границе страницы. (Конечно, ни один принтер не поддерживает это, но это хорошо для экспорта в PDF.) По-видимому, в зависимости от текущего принтера по умолчанию Word не разрешит использование водяного знака без полей, вместо этого смещение изображения вокруг.
  • Использование заголовка страницы: при редактировании заголовка страницы я могу вставлять картинки в произвольные позиции, и это здорово. Однако я не смог найти способ (кроме макросов) включить / отключить только картинки в шапке. (Текст должен остаться там.)

2 ответа2

1

Вы можете попробовать поэкспериментировать с условным текстом в заголовке на основе свойства документа, такого как категория. Если вы введете "PDF" в категорию, заголовок будет напечатан, если вы удалите его, заголовок исчезнет.

Попробуйте этот простой пример:

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

Я не уверен, как извлечь имя принтера, используемое на этапе печати, но, по крайней мере, это может упростить ситуацию.

0

Будучи разработчиком программного обеспечения, я, наконец, выбрал решение для программирования и разработал собственную ленту Word на C #.

Я понимаю, что это не удовлетворительный ответ для не-разработчиков, но, к сожалению, я не могу прикрепить плагин к этому сообщению. Однако, если у вас есть доступ к программисту, он должен начать его:

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .