几天前,我尝试右键点击照片打印照片。一个对话框显示选择打印机,PaperSize,质量等。我选择PaperSize = Legal
。打印机可以在Legal尺寸纸张上打印(我使用的是HP LaserJet 1020 plus打印机)。
现在我正在尝试从C#打印一些东西,设置PaperSize,但打印机无法打印Legal。以下是我的代码。代码有什么不对吗?
this.printDocument.PrinterSettings.PrinterName = this.printSetting.PrinterName;
PaperSize pkCustomSize1 = new PaperSize("8.5x13", 1300, 850);
this.printDocument.DefaultPageSettings.PaperSize = pkCustomSize1;
this.printDocument.DefaultPageSettings.PaperSize.RawKind = 119;
printPreviewDialog.Document = printDocument;
printDocument.Print();
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Bitmap bm = new Bitmap(300, 3000);
// Code for bm.
g.DrawImage(bm, 0, 0);
}
所以问题是,设置PaperSize(和PrinterSetting)的正确方法是什么?
还有一件事,我搜索了打印机的MaximumPrintableArea
。我的打印机有最大A4尺寸,为何在Legal
上打印?
答案 0 :(得分:0)
PrintDocument.PrinterSettings.PaperSizes
集合具有您使用PrintDocument.Printersettings.PrinterName
属性设置的打印机支持的所有纸张尺寸。 PrintDocument.PrinterSettings
包含您设置的打印机的各种信息。在任何需要的地方使用它们。
示例代码:
// do a null check of the return value of GetPaperSize. 5 represent the rawkind of Legal
printdocument.PrinterSettings.DefaultPageSettings.PaperSize = GetPaperSize(5);
private PaperSize GetPaperSize(int rawKind)
{
PaperSize papersize = null;
foreach(PaperSize item in printdocument.PrinterSettings.PaperSizes)
{
if(item.RawKind == rawKind)
{
papersize = item;
break;
}
}
return papersize;
}
要回答您的其他问题,我认为打印机的默认PaperSize
设置为Legal。
编辑:
每台打印机(硬件设备)都有自己的物理限制,定义为HardMargins。 Adobe PDF或Cute PDF等软件打印机没有这些限制。您无法打印超出此限制。无论你设置什么纸张,它都会在此限制内打印。这就是为什么你仍然可以使用Letter,Legal,A4等打印的原因。(打印机支持的纸张尺寸,即可以在打印机中插入的纸张尺寸),但所有纸张尺寸的最大可打印区域仍然相同。