我遇到同樣的需求。以下是爲我提供所需功能的一些邏輯:
//
// PrintDocument_inst
//
this.PrintDocument_inst.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.k_line_PrintPage);
private void Print(string align_file_name)
{
if (plot_metafile == null)
{
MessageBox.Show("you need to load offset data before printing a plot");
return;
}
try
{
PrintDocument_inst.DefaultPageSettings = PageSettings_inst;
PrintDialog_inst = new PrintDialog();
PrintDialog_inst.Document = PrintDocument_inst;
PrintDialog_inst.UseEXDialog = true; // this must be set true or dialog won't show on 64 bit Vista
PrintDialog_inst.PrinterSettings.PrinterName = "Microsoft XPS Document Writer";
PrintDialog_inst.PrinterSettings.PrintToFile = true;
PrintDialog_inst.PrinterSettings.PrintFileName = align_file_name;
i_page_to_print_next = 1;
n_pages_still_to_print = 1;
PrintDocument_inst.Print();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
}
} // end of function Print(string align_file_name)
//PrintPage event handler
private void k_line_PrintPage(object sender,PrintPageEventArgs ppea)
{
int leftMargin = ppea.MarginBounds.Left;
int topMargin = ppea.MarginBounds.Top ;
try
{
float _scale_f;
if (PrintDialog_inst != null)
{
string str_printer_name = PrintDialog_inst.PrinterSettings.PrinterName.ToString ();
if (str_printer_name.CompareTo ("Adobe PDF") == 0)
{
_scale_f = 0.61F; // 0.85F;
}
else
{
_scale_f = 0.59F; // 0.82F;
}
}
else // case of print preview
{
_scale_f = 0.59F; // 0.82F;
}
if (_scale_f != 1.0F) ppea.Graphics.ScaleTransform (_scale_f, _scale_f);
ppea.Graphics.DrawImage (plot_metafile, leftMargin, topMargin);
ppea.HasMorePages = (--n_pages_still_to_print > 0 ? true : false);
}
finally
{
}
} // end of private void k_line_PrintPage(object sender,PrintPageEventArgs ppea)
你能澄清一下這個問題嗎?你在用什麼語言工作?您是否專門嘗試從您的應用程序創建XPS輸出,還是僅僅當XPS Document Writer是默認驅動程序時,彈出對話框會干擾應該是自動化工作流的內容? – Jon 2011-03-03 20:05:21
也許您已閱讀的某些鏈接,如果您提供這些鏈接以幫助您解決問題,可能會有所幫助。 – Nocturnal 2011-03-04 08:25:19
喬恩 - 問題是關於創建一個打印機驅動程序。這是一個打印到計算機默認打印機的自動化過程。 - 夜間,謝謝,但實際上我離開了這個解決方案,併購買了第三方產品。 – 2011-04-06 08:09:11