.Net中的打印A4纸如何实现(以C#为例)

——VB中的Printer.Print.Net中如何实现

在VB中,如果要打印打印A4文档,且内容是从DB中,或者DataGrid中等动态获取的,实现起来非常简单,诸如以下代码(rs表示一记录集):

.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    rs.MoveFirst
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.PaperSize 
= vbPRPSA4
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.Orientation 
= vbPRORPortrait
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.FontName 
= "Courier New"
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.FontBold 
= True
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.FontSize 
= 24
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.Print 
"               FQA Report"
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.FontSize 
= 16
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.Print 
"   Pallet ID:" & Trim(rs("pallet_id"))
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    NewLine2 
= String(100" ")
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    
Mid(NewLine2, 15= "NO#"
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    
Mid(NewLine2, 1030= "System S/N"
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    
Mid(NewLine2, 3520= "BOX_ID"
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    
Mid(NewLine2, 6020= "Pallet_ID"
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    
While Not rs.EOF
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现        NewLine2 
= String(100" ")
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现        
Mid(NewLine2, 15= Trim(rs("No"))
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现        
Mid(NewLine2, 1030= Trim(rs("SN"))
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现        
Mid(NewLine2, 3520= Trim(rs("BOX_ID"))
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现        
Mid(NewLine2, 6020= "" & Trim(rs("Pallet_ID"))
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现        Printer.Print NewLine2
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现        rs.MoveNext
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Wend
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    Printer.Print NewLine2
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现    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:

.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现public bool PrintDoc()
}

 

上面代码中,核心的是下面这个事件,调用pd_PrintPage方法:

//打印
PrintDocument printDocument = new PrintDocument();
printDocument.PrintPage 
+= new PrintPageEventHandler(this.pd_PrintPage);
printDocument.Print();

 

pd_PrintPage方法:


打印效果大致截图:(如果有多页,尾部的信息只在最后一页显示)
.Net中的打印A4纸如何实现(以C#为例)——VB中的Printer.Print在.Net中如何实现 
总结:如此简单的功能,在.Net中实现起来确实那么的复杂,尤其是对于自动分页的功能,虽然总体上功能强大了好多,但是把原先那么好用的东西给去掉了。以上代码改写成VB.Net的话,都差不多。。。

 

 

相关文章:

  • 2021-12-16
  • 2022-01-25
  • 2022-12-23
  • 2021-12-03
  • 2022-01-02
  • 2022-01-14
猜你喜欢
  • 2022-12-23
  • 2021-05-18
  • 2021-08-23
  • 2022-01-23
  • 2022-12-23
  • 2021-09-09
相关资源
相似解决方案