如何在c#代码后面将打印预览对话框纸张大小设置为a5?

时间:2012-09-10 12:07:14

标签: c# winforms printing

我有一个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();

    }

2 个答案:

答案 0 :(得分:5)

您可以从PaperSize对象的PrinterSettings属性中获取A5 PrintDocument对象。它具有PaperSizes属性,可容纳所选打印机的所有纸张尺寸。您可以使用LINQ找到所需的LINQ。例如:

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

答案 1 :(得分:1)

请点击以下链接查看我的回答:

Printing Envelopes from C#

谢谢。