gpt4 book ai didi

c# - 使用虚拟打印机时如何检查打印是否完成?

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:54 24 4
gpt4 key购买 nike

我正在使用虚拟打印机将 word 文档打印成 C# 程序中的图像文件。到目前为止,一切都很好,只是我不知道打印过程何时完成,所以我可以读取生成图像的内容。这是我的代码:

using System;
using Microsoft.Office.Interop.Word;
using Word=Microsoft.Office.Interop.Word;

var app = new ApplicationClass();
object filename = "C:\\ad.doc";
var missing = Type.Missing;
var doc = app.Documents.Open(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
var oldPrinter = app.ActivePrinter;
app.ActivePrinter = "Name of printer";
object outputFileName = "c:\\ad.tif";
object trueValue = true;
object falseValue = false;

doc.PrintOut(ref trueValue, ref falseValue, ref missing, ref outputFileName, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref trueValue, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing);


app.ActivePrinter=oldPrinter ;
doc.Close(ref missing, ref missing, ref missing);
app.Quit(ref missing, ref missing, ref missing);

那我怎样才能确定打印处理已经完成,以便我可以继续获取图像内容呢?

最佳答案

不幸的是,我发现在 Word 中检查打印状态的唯一方法是以下两种方法之一。

  1. 同步打印。不太好,因为它会绞死你直到打印完成。
  2. 异步打印文档,然后检查APPLICATION.BACKGROUNDPRINTINGSTATUS 属性在循环中或在后台工作线程不断,直到它变为 0(不再打印)或者你遇到看门狗超时

像这样的……

        Do Until _Doc.Application.BackgroundPrintingStatus = 0
System.Windows.Forms.Application.DoEvents()
System.Threading.Thread.Sleep(750)
Loop

不完美,但它有效。

请注意,这只会在它从 word 完成假脱机时告诉您。如果您谈论的是知道文档何时在打印机上实际完成打印,那就完全是另一个问题了。您将需要打印作业 ID 并且必须查询打印机后台处理程序的内容,我无法帮助您。

关于c# - 使用虚拟打印机时如何检查打印是否完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com