繁体   English   中英

如何在C#代码隐藏中将PrintPriviewDialog纸张大小设置为A5?

[英]How can i set PrintPriviewDialog papersize to a5 in c# codebehind?

我有一个Windows窗体应用程序,有一个包含面板的简单Windows窗体。 我已经将面板大小设置为:560,579像素,并且我已经通过以下方式设置了打印文档的大小:

System.Drawing.Printing.PaperSize a = new System.Drawing.Printing.PaperSize("A5 (148 x 210 mm)", 584, 827);
printDocument1.PrinterSettings.DefaultPageSettings.PaperSize = a;

现在,我希望printpreviewdialoge页面的大小为a5或至少与我的打印文档相同,并适合它,我该如何实现?

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        Bitmap b = new Bitmap(pnlPrint.Width, pnlPrint.Height);
        pnlPrint.DrawToBitmap(b, new System.Drawing.Rectangle(0, 0, pnlPrint.Width, pnlPrint.Height));
        e.Graphics.DrawImage(b,0,0);
    }

    private void Print()
    {
    PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
    var paperSize = printDocument1.PrinterSettings.PaperSizes.Cast<PaperSize>().FirstOrDefault(e => e.PaperName == "A5");
    printDocument1.PrinterSettings.DefaultPageSettings.PaperSize = paperSize; 
    printPreviewDialog1.Document = printDocument1;

    printPreviewDialog1.ShowDialog();

    }

您可以从PrintDocument对象的PrinterSettings属性获取A5 PaperSize对象。 它具有PaperSizes属性,该属性保存所选打印机的所有纸张尺寸。 您可以使用LINQ查找所需的那个。 例如:

var paperSize = printDoc.PrinterSettings.PaperSizes.Cast<PaperSize>().FirstOrDefault(e => e.PaperName == "A5");
printDoc.PrinterSettings.DefaultPageSettings.PaperSize = paperSize;

只需从下面的链接检查我的答案:

从C#打印信封

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM