我一直在使用 PrintDocument 和 PrintPreview 对象。即使用 Graphics 类。调用 print 时,您会得到一个“PrintEventArgs e”对象。然后,您可以使用 e.Graphics 访问诸如 e.Graphics.DrawString、.DrawImage 等内容。
我构建了一个覆盖打印的完整打印对象类。所以我有一个详细信息框,它有不同的字体、标志、标题、法律术语等。每一个都有它自己的类。我将它们全部放在一个大列表中,然后调用 printThis(List);它将获取每个打印函数和坐标,并为我制作一个表格。
继承的对象
class formHdr : printObject
{
private string headerText;
public formHdr(string hText)
: base()
{
headerText = hText;
}
public override void printThis(System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
g.DrawString(headerText, FRHEADER, Brushes.Black, BaseX, BaseY);
}
}
基类
abstract class printObject
{
protected Font FTHEADER;
protected Font NRML;
protected Font DETAIL;
protected Font FRHEADER;
protected Font DETHEADER;
protected Font LEGAL;
protected Font LEGAL2;
public int baseX, baseY;
public int boxSX, boxSY;
public printObject()
{
baseX = 0;
baseY = 0;
boxSX = 0;
boxSY = 0;
FTHEADER = new Font("Arial", 12, FontStyle.Bold);
NRML = new Font("Calibri", 10);
DETAIL = new Font("Consolas", 8);
FRHEADER = new Font("Arial", 16, FontStyle.Bold);
DETHEADER = new Font("Calibri", 10, FontStyle.Bold);
LEGAL = new Font("Arial", 8);
LEGAL2 = new Font("Arial", 10);
}
public virtual void printThis(PrintPageEventArgs e) { }
对象创建
mainHead = new formHdr("Bill of Lading/Weigh slip Original");
mainHead.BaseX = 225;
mainHead.BaseY = 20;
bol.Add(mainHead);
也许这可以让你开始?我仍在调整它,并且会对其他响应感兴趣。