我試圖無聲打印圖片文件,我需要在特殊紙張類型(「光面照片紙」)上打印,並在特定尺寸(15釐米10釐米)上打印。如何在使用PrinterDialog時設置紙張類型?
在正常的Windows 7打印對話框我可以選擇:
紙張尺寸,
紙質量(例如 - 「自動」, 「高」, 「標準」, 「自定義」 )
紙張類型( 「普通紙」, 「光澤照片紙」, 「高級光面照片紙」, 「專業照片紙鉑金」, 「明信片」,等...)
但是,通過c#代碼,我設法只設置了紙張尺寸(它在15釐米的6英尺== 10釐米上是4英寸)。
我的問題是我如何去設置紙張類型的選項,不的PaperSource( 「紙盤1」, 「盤2」 等)......
我知道每臺打印機都有它自己的紙張類型,所以我可能需要遍歷所有這些,但我無法想象它是如何實現的。
這是我當前的代碼:
string strPrinterName = "Canon iP4850";
PrintDocument printDoc = new PrintDocument();
// We set the paper size
printDoc.DefaultPageSettings.PaperSize = new PaperSize("PhotoPaper", 400, 600);
// Inside the event i actually draw the image all over the paper by using e.Graphics.DrawImage(...)
printDoc.PrintPage += PrintDocPrintPage;
// Creating the print dialog
PrintDialog dlgPrint = new PrintDialog
{
Document = printDoc
};
// We choose the printer
dlgPrint.PrinterSettings.PrinterName = strPrinterName;
// just to be sure - give the new size of our paper
dlgPrint.PrinterSettings.DefaultPageSettings.PaperSize = new PaperSize("PhotoPaper", 400, 600);
// If the printer is invalid
if (!dlgPrint.PrinterSettings.IsValid)
{
throw new Exception(@"Printer is invalid" + Environment.NewLine + strPrinterName);
}
// Print without showing the dialog
printDoc.Print();
謝謝大家提前。
我不是說這是不可能的,但它不會很漂亮。從理論上講,您可以獲得設備的DEVMODE結構(該結構將具有特定於打印機驅動程序的擴展)設置正確的值,然後將其寫回。 PrinterSettings對象有一些幫助功能可以執行此操作。 – user957902
像這樣[link](http://nicholas.piasecki.name/blog/2008/11/programmatically-selecting-complex-printer-options-in-c-shar/)?我會嘗試... – itsho
是的,這正是你需要做的。 – user957902