Добавить и удалить бланк в документе Word
У нашей компании есть бумага для бланков (предварительно напечатанная бумага с нашим логотипом). Всякий раз, когда мы отправляем что-либо по почте, мы печатаем это на этой бумаге. Однако, когда мы отправляем тот же документ по электронной почте, мы конвертируем его в файл PDF.
Теперь проблема в том, что при преобразовании документа Word в PDF он должен содержать фирменный бланк. При печати одного и того же документа на бумаге этого делать не следует (иначе фирменный бланк будет напечатан дважды).
В настоящее время мы используем два разных шаблона документов Word - один с бланком, другой без. Поэтому всякий раз, когда мы хотим добавить или удалить бланк, нам нужно создать новый документ с другим шаблоном, а затем скопировать и вставить все. Неприятное решение. То, что я ищу, это какой-то простой способ включить и выключить бланк.
Что я пробовал до сих пор:
- Переключение шаблона: похоже, не существует простого способа переключения шаблона для существующего документа.
- Использование водяного знака с изображением: наш фирменный бланк переходит к границе страницы. (Конечно, ни один принтер не поддерживает это, но это хорошо для экспорта в PDF.) Очевидно, что в зависимости от текущего принтера по умолчанию, Word не разрешит водяной знак без полей, вместо этого смещение изображения вокруг.
- Использование заголовка страницы: при редактировании заголовка страницы я могу вставлять картинки в произвольные позиции, и это здорово. Однако я не смог найти способ (кроме макросов) включить / отключить только картинки в шапке. (Текст должен остаться там.)
2 ответа
Будучи разработчиком программного обеспечения, я, наконец, выбрал решение для программирования и разработал собственную ленту 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.
Вы можете попробовать поэкспериментировать с условным текстом в заголовке на основе свойства документа, такого как категория. Если вы введете "PDF" в категорию, заголовок будет напечатан, если вы удалите его, заголовок исчезнет.
Попробуйте этот простой пример:
{IF {DOCPROPERTY Category}="PDF" "This is the header text..." ""}
Я не уверен, как извлечь имя принтера, используемое на этапе печати, но, по крайней мере, это может упростить ситуацию.