ユーザーの操作なしで印刷エージェントとして機能するアプリケーションを開発しています。そこで、以下の条件を考えなければなりません。
- ダウンロードファイルは、ユーザーのアクセスであってはなりません。
- ファイルは印刷後に削除する必要があります。
- ダウンロード ドキュメントは、Image/PDF または word.docx のいずれかです。
- 最初にダウンロードしたファイルを最初に印刷する必要があります。
これまでのところ、次のように完了することができます。- 新しいダウンロード ファイルに追いつくために作成されたウォッチャー メソッド。
public void catchDocuments()
{
if (!string.IsNullOrEmpty(Program.docDirectory))
{
file_watcher = new FileSystemWatcher();
file_watcher.Path = Program.docDirectory;
file_watcher.EnableRaisingEvents = true;
file_watcher.Created += new FileSystemEventHandler(OnChanged);
}
}
新しいファイルが来ると、Onchange イベントが発生し、ドキュメントが印刷されます。
string extension = Path.GetExtension(args.FullPath);
if (extension.Equals(@".png") || extension.Equals(@".jpeg") || extension.Equals(@".jpg"))
{
docCtrl.imageToByteArray(nFile);
docCtrl.printImage();
}
else if (extension.Equals(@".pdf"))
{
docCtrl.PrintPDF(nFile);
}
しかし、私の問題は、ダウンロードしたファイルの印刷プロセスが完了する前に別のファイルをダウンロードすると、アプリケーションが正しく動作しないことです。
次のように印刷オプションを使用しました。
//For Image printing
public void printImage()
{
System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
pd.PrintPage += new PrintPageEventHandler(PrintPage);
PrintDialog pdi = new PrintDialog();
pdi.Document = pd;
pdi.PrinterSettings.PrinterName;
pd.Print();
}
//For PDF Printing
public void PrintPDF(string path)
{
PrintDialog pdf = new PrintDialog();
Process p = new Process();
pdf.AllowSelection = true;
pdf.AllowSomePages = true;
p.EnableRaisingEvents = true; //Important line of code
p.StartInfo = new ProcessStartInfo()
{
CreateNoWindow = true,
Verb = "print",
FileName = path,
};
p.Start();
p.WaitForExit();
p.Close();
}
どうすればこの問題を克服できますか。私は本当にあなたの良い考えに感謝します.