Печать текстового документа с полями за пределами области печати - PullRequest
5 голосов
/ 01 ноября 2011

У меня есть код, где я печатаю слово документ. В примере документа есть раздел с изображением, на котором пользователь изменил поля.

Когда я выполняю код, я получаю следующее сообщение:

Поля раздела 1 установлены за пределами области печати. ​​

После обработки документа он начинает буферизовать и выдает этот запрос enter image description here Как отключить диалоговое окно уведомлений?

мой код:

        Process printJob = new Process();
        printJob.StartInfo.Verb = "PrintTo";
        printJob.StartInfo.Arguments = printerName;
        printJob.StartInfo.ErrorDialog = false;
        printJob.StartInfo.CreateNoWindow = true;
        printJob.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        printJob.StartInfo.FileName = path;
        printJob.StartInfo.UseShellExecute = true;
        printJob.StartInfo.Verb = "print";
        printJob.Start();

Где путь к переменной> - это путь к имени файла

1 Ответ

7 голосов
/ 01 ноября 2011

http://word.mvps.org/faqs/macrosvba/OutsidePrintableArea.htm

В соответствии с этим вам необходимо отключить фоновую печать, а затем отключить Application.DisplayAlerts.

EDIT

Вы не сможете сделать это с Process.Глагол "print" использует / x / dde, чтобы сказать Word для печати:

/ x Запускает новый экземпляр Word из операционной оболочки (например, для печати в Word).Этот экземпляр Word отвечает только на один запрос DDE и игнорирует все другие запросы DDE и множественные экземпляры.Если вы запускаете новый экземпляр Word в операционной среде (например, в Windows), рекомендуется использовать ключ / w, который запускает полностью работающий экземпляр.

Для подавлениявместо сообщения вам нужно будет выполнить взаимодействие:

  1. Добавить ссылку на Microsoft.Office.Interop.Word
  2. Создать метод Print(string path):
Application wordApp = new Application();
wordApp.Visible = false;

//object missing = Type.Missing;

wordApp.Documents.Open(path); //for VS 2008 and earlier - just give missing for all the args

wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
wordApp.ActiveDocument.PrintOut(false); //as before - missing for remaining args, if using VS 2008 and earlier

wordApp.Quit(WdSaveOptions.wdDoNotSaveChanges); //ditto
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...