Подавить диалоговое окно печати при печати в Microsoft Document Image Writer из Oracle BPM 10g - PullRequest
1 голос
/ 21 октября 2011

У нас есть активность Oracle BPM 10g, которая:

  1. Считывает защищенный от заполнения форм шаблон документа Word.
  2. Объединяет данные в поля.
  3. Сохраняет объединенную / заполненную копию в файловой системе.
  4. Печать документа на выбранном, предварительно определенном принтере ИЛИ на принтере по умолчанию.

Все это прекрасно работает при печати на «реальном» принтере. Однако теперь необходимо вывести документ Word в формат TIFF. Попытка использовать «Microsoft Document Image Writer» в качестве одного из вариантов принтера не работает должным образом. Обычно при печати в Microsoft Document Image Writer непосредственно из Word (или любого другого приложения) вам предлагается указать место для сохранения результирующего файла. Эта подсказка не появляется при попытке печати из этого конкретного действия в BPM 10g.

В идеале, мы на самом деле хотели бы обойти диалог и вывести TIFF непосредственно в файловую систему. Однако я не нашел способа контролировать это программно. То есть, возможность указать имя файла назначения в коде. Сейчас я просто пытаюсь получить вывод в Microsoft Document Image Writer, чтобы убедиться, что он работает.

Итак, вопрос (ы) нижнего колонтитула:

  • Можно ли это сделать? То есть, печать в Microsoft Document Image Writer
  • Если да, можно ли отключить диалог местоположения файла?
  • Как?

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Вы ничего не сказали о том, как вы автоматизируете Word. В Word VBA вы можете использовать этот образец для немедленной распечатки активного документа без отображения диалогового окна печати:

Public Sub PrintToXPS()
'Presume that Microsoft XPS Document Writer was already
'set up as ActivePrinter   
Dim strFilePath As String    
strFilePath = "C:\temp\helloworld.xps"    
ActiveDocument.PrintOut Background:=False, outputfilename:=strFilePath
End Sub

Вместо этого нет необходимости использовать диалог печати. Однако, если вы хотите работать с объектом диалога, это можно сделать в Word, используя переменную типа Word.Dialog и предоставляя необходимые параметры, например,

   Dim dlgFilePrint As Word.Dialog
Set dlgFilePrint = Application.Dialogs(wdDialogFilePrint)
dlgFilePrint.Update
dlgFilePrint.PrToFileName = strFilePath
dlgFilePrint.printtofile = True
'add other parameters as needed ...
'lock up parameter names in  Word VBA Online Help using "WdWordDialog-Enumeration"
'as key word
dlgFilePrint.Execute

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

0 голосов
/ 08 ноября 2011

Спасибо, domke consulting.

После дополнительного поиска я нашел это сообщение на форуме MSDN .

Добавление этих записей реестра для подавления диалогового окна и подавлениявыходные данные после генерации, кажется, сделали свое дело:

In HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 12.0 \ MODI \ MDI Writer

  • PrivateFlags = 17 (Десятичное число)
  • OpenInMODI = 0 (десятичное число)

В наших целях это работает нормально, если мы вызываем метод printOut() со следующими соответствующими аргументами (другие аргументы здесь опущеныдля краткости):

document.printOut(outputFileName : "C:\\temp\\fileName.tif", printToFile : true);
...