开发语言:VS2008
打印机型号:EPSON TM-U220PB,LPT口
已使用QRCODE生成了二维码,Bitmap格式。
我想把二维码打印出来,通过LPT打印口。
在网上也找过,都说是二维码不可能直接打,需要转BYTE。
但具体怎么转,转完后已什么方式传给打印机打印?
急需代码,完整的代码。
谢谢大神!
这里又一个例子,不过是打印的条形码,可以参考一下
http://www.cnblogs.com/randyzhuwei/p/5216413.html
二维码其实就是图片,可以直接打印,你找C#打印图片的代码,直接可以用。
所谓不可以打,是说,用ESC/PS方式直接写端口不可以直接打,但是你安装好打印机驱动,通过调用windows的打印的话,不需要你去直接写端口的。
我用的打印机不需要安装驱动的,打印机是LPT口针式打印机。
我是可以通过LPT口打印字符串,但打印图片就不会弄了。因为我打印字符串的时候也是通过二进制打印的。
毕竟我要打印的是图片,不是字符串,求打印图片的代码。
可以通过第三方控件,直接调用打印方法就行,其他的都不用处理
我是可以通过LPT口打印字符串,但打印图片就不会弄了。因为我打印字符串的时候也是通过二进制打印的。
毕竟我要打印的是图片,不是字符串,求打印图片的代码。
并口打印的话直接调用windows驱动打印就好了,代码大概如下:
namespace PrintTest
{
//首先首先引入命名空间
using System.Drawing.Printing;
using System.Drawing;
using System.IO;
public class WindowsDriverPrinter
{
Bitmap _bitmap;//当前打印的位图
float _xPosition;//打印的x坐标
float _yPosition;//打印的y坐标
public WindowsDriverPrinter(){
}
//接下来是打印图片函数
public void PrintImage(Bitmap bmp,float x,float y,string docName ="temp")
{
_bitmap = bmp;
_xPostion = x;
_yPosition = y;
PrintDocument printdoc = new PrintDocument();//创建PrintDocument对象
printdoc.DocumentName = docName;//重命名打印文件
printdoc.PrintController = new StandardPrintController();
printdoc.PrintPage += new PrintPageEventHandler(PrintPageCallBack);//设置打印回调函数
printdoc.Print();//进行打印
}
//回调函数进行真正的打印
private void PrintPageCallBack(object sender, PrintPageEventArgs e)
{
using (MemoryStream stream = new MemoryStream())
{
_bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);//将位图保存到内存流
Image img = Image.FromStream(ms);//将bitmap转化为Image对象
e.Graphics.DrawImage(_image, _xPosition ,_yposition);//打印图片
}
}
}
//最后是调用
class Program{
void Main()
{
Bitmap QRCodeBmp ;//假如这个是你获取的二维码bitmap对象
WindowsDriverPrinter printer = new WindowsDriverPrinter();
printer.PrintImage(QRCodeBmp,10f,10f);
}
}
//最后,如果需要打印文字的话其实和图片差不多,用 e.Graphics.DrawString()方法
二维码其实就是图片,可以直接打印,你找C#打印图片的代码,直接可以用。
所谓不可以打,是说,用ESC/PS方式直接写端口不可以直接打,但是你安装好打印机驱动,通过调用windows的打印的话,不需要你去直接写端口的
参考http://www.cnblogs.com/randyzhuwei/p/5216413.html此内容写完代码了。
打印出来的图片全是黑的,是不是得需要调整高度宽度?