2017-05-25 105 views
8

我有一個選項,用戶可以選擇打印選項,它將打開PrintDialog,用戶可以在其中選擇已定義的打印機配置文件。使用選定的打印機配置文件/頁面大小打印文件

對於此打印機,默認紙張尺寸爲A4,但選擇此配置文件時,它將變爲A5。

我使用下面的代碼將打印任務發送到正確的打印機,但由於它總是以A4打印,因此沒有選擇正確的紙張尺寸。我在這裏錯過了什麼,或者有沒有其他方法來實現這一目標?

using (var pd = new PrintDialog()) 
{ 
    if (pd.ShowDialog() == DialogResult.OK) 
     { 
     var info = new ProcessStartInfo(filepath) 
        { 
         Arguments = "\"" + pd.PrinterSettings + "\"", 
         CreateNoWindow = true, 
         WindowStyle = ProcessWindowStyle.Hidden, 
         UseShellExecute = true, 
         Verb = "Print" 
        }; 
     Process.Start(info); 
     } 
    } 
+3

這是過度不可能的任何程序與* *的文件路徑將會欣賞那些你傳遞參數有關。一般來說,任何實現Print動詞的程序都會自行決定使用哪種紙張。幾乎總是在控制面板中配置的默認選擇。 –

+0

看起來很像打印驅動程序的默認配置選項對話框,但您似乎將其作爲單獨的進程打開。您是否正在嘗試製作更改默認打印機設置的程序? 換句話說,我很困惑你到底想要做什麼。 S. Hooley的答案演示了從您的應用程序中實際打印頁面的常用方法。我相信它可以與PrintDialog一起使用,以允許用戶調整打印設置。 TLDR:請詳細說明您正在嘗試做什麼。 – ashbygeek

回答

0

你應該能夠指定page settings使用如下代碼,它依靠的PrintDocument從System.Drawing.Printing。如果有必要,還可以定義事件處理程序使用PrintDocument類PrintPage事件:

PrintDocument pd = new PrintDocument(); 
//pd.PrintPage += new PrintPageEventHandler(handlePagePrint); 
pd.PrinterSettings.PrinterName = "Printer name goes here"; 
// select the appropriate item from the PaperSizes collection 
pd.DefaultPageSettings.PaperSize = pd.PrinterSettings.PaperSizes[0]; 

if (pd.PrinterSettings.IsValid) 
{ 
    pd.Print(); 
} 
+0

這可能是很好的顯示如何與打印機設置對話框。 – ashbygeek