1

我们有一个 Oracle BPM 10g 活动:

  1. 读取表单填写保护的 Word 文档模板。
  2. 将数据合并到字段中。
  3. 将合并/填充的副本保存到文件系统。
  4. 将文档打印到选定的预定义打印机或默认打印机。

当打印到“真实”打印机时,所有这些都可以正常工作。但是,现在需要将 Word 文档输出到 TIFF。尝试使用“Microsoft Document Image Writer”作为打印机选项之一无法按预期工作。通常,当直接从 Word(或任何其他应用程序)打印到 Microsoft Document Image Writer 时,系统会提示您输入保存结果文件的位置。尝试从 BPM 10g 中的此特定活动进行打印时,不会出现此提示。

理想情况下,我们实际上希望绕过对话框并将 TIFF 直接输出到文件系统。但是,我还没有找到一种以编程方式控制它的方法。也就是说,能够在代码中指定目标文件名。现在,我只是试图将输出输出到 Microsoft Document Image Writer,以确保它正常工作。

因此,最重要的问题是:

  • 这可以做到吗?即,打印到 Microsoft Document Image Writer
  • 如果是,可以抑制文件位置对话框吗?
  • 如何?
4

2 回答 2

1

您没有提及自动化 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 打印机所做的,您当然也可以使用任何其他打印机。

于 2011-10-22T13:00:27.577 回答
0

谢谢domke咨询。

经过更多搜索,我在 MSDN 上找到了这个论坛帖子

添加这些注册表项以抑制对话框并抑制生成后输出似乎可以解决问题:

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);
于 2011-11-08T14:16:59.607 回答