首页 / 软件开发 / C# / C#中打印A4纸的实现
C#中打印A4纸的实现2011-07-31 博客园 maobisheng在VB中,如果要打印打印A4文档,且内容是从DB中,或者DataGrid中等动态获取的,实现起来非常简 单,诸如以下代码(rs表示一记录集): rs.MoveFirst
Printer.PaperSize = vbPRPSA4
Printer.Orientation = vbPRORPortrait
Printer.FontName = "Courier New"
Printer.FontBold = True
Printer.FontSize = 24
Printer.Print " FQA Report"
Printer.FontSize = 16
Printer.Print " Pallet ID:" & Trim(rs("pallet_id"))
NewLine2 = String(100, " ")
Mid(NewLine2, 1, 5) = "NO#"
Mid(NewLine2, 10, 30) = "System S/N"
Mid(NewLine2, 35, 20) = "BOX_ID"
Mid(NewLine2, 60, 20) = "Pallet_ID"
While Not rs.EOF
NewLine2 = String(100, " ")
Mid(NewLine2, 1, 5) = Trim(rs("No"))
Mid(NewLine2, 10, 30) = Trim(rs("SN"))
Mid(NewLine2, 35, 20) = Trim(rs("BOX_ID"))
Mid(NewLine2, 60, 20) = "" & Trim(rs("Pallet_ID"))
Printer.Print NewLine2
rs.MoveNext
Wend
Printer.Print NewLine2
Printer.Print String(100, "-")
在上述代码中,如果记录集中的数量很多, 即内容超出了一页纸,程序不用做任何设置,便会自动分页,那么到.Net中,如何实现这么一个简单的功 能呢?查了好多资料,上网搜了好久,发现没有类似的例子,看了MSDN后,才发现,到VB.Net中 ,VB中那么好用的Printer不见了,一下为MSDN的描述:http://msdn.microsoft.com/zh- tw/library/cc438273(VS.71).aspx"Visual Basic 6.0 中的 Printer 物件在 Visual Basic .NET 中是由 PrintDocument 组件取 代。两者的行为不同,但在多数情况下可复制功能。下表将列出 Visual Basic 6.0 属性 (Property)、 方法及事件与其 Visual Basic .NET 对等用法。如果没有直接的对等用法,则会提供连结以取得其它信 息。除非另外注明,否则所有的对象都是在 System.Drawing 命名空间中。"第一感觉是, 在.Net中有比这更好用的打印功能,而且功能更强大,于是开始翻书,上网找例子,花了好长时间后,终 于在网上找到了两个例子,跟教科书(C#高级编程第四版第25章,VB 2005入门经典第7章)里的例子差不 多,例子中都是要先打开文档,LoadFile后,然后计算中共有多少行,然后设置一些属性等等,虽然功能 强大,但是极其复杂,不能直接拿来用,于是只好自己改写。。。打印Function:public bool PrintDoc()
{
try
{
//获取需要打 印的内容
string strSQL = "exec [usp_PalletPrintDocInfo] ""
+ Parameters.strStation + "", "" + Parameters.strPalletID + """;
dsPrintInfo = doDB.GetDataSet(strSQL);
if (dsPrintInfo.Tables[0].Rows.Count < 1 || dsPrintInfo.Tables[1].Rows.Count < 1)
{
Parameters.strMsg = "Get Print Information Error";
return false;
}
//打印
PrintDocument printDocument = new PrintDocument();
printDocument.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
printDocument.Print();
/**/////打印预览,调试的时候,可以通过这个,节约纸张
//PrintPreviewDialog ppd = new PrintPreviewDialog();
//PrintDocument pd = new PrintDocument();
//pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
//ppd.Document = pd;
//ppd.ShowDialog();
return true;
}
catch(Exception ex)
{
Parameters.strMsg = ex.Message.ToString();
return false;
}
}