Kar*_*ooz 4 c# printing winforms
我有一个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;
Run Code Online (Sandbox Code Playgroud)
现在我希望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();
}
Run Code Online (Sandbox Code Playgroud)
您可以从PaperSize
对象的PrinterSettings
属性中获取A5 PrintDocument
对象.它具有PaperSizes
保存所选打印机的所有纸张尺寸的属性.您可以使用LINQ找到所需的LINQ.例如:
var paperSize = printDoc.PrinterSettings.PaperSizes.Cast<PaperSize>().FirstOrDefault(e => e.PaperName == "A5");
printDoc.PrinterSettings.DefaultPageSettings.PaperSize = paperSize;
Run Code Online (Sandbox Code Playgroud)