| 发表于:2007-03-26 10:01:16 楼主 |
代码可以直接输出到远程打印机,但是a4纸上的却是乱码,代码如下,急求解,请高手指教!谢谢 public partial class form1 : form { public struct docinfo { [marshalas(unmanagedtype.lpwstr)]public string pdocname; [marshalas(unmanagedtype.lpwstr)]public string poutputfile; [marshalas(unmanagedtype.lpwstr)]public string pdatatype; } public class printdirect { [dllimport( "winspool.drv ", charset = charset.unicode, exactspelling = false, callingconvention = callingconvention.stdcall)] public static extern long openprinter(string pprintername, ref intptr phprinter, int pdefault); [dllimport( "winspool.drv ", charset = charset.unicode, exactspelling = false, callingconvention = callingconvention.stdcall)] public static extern long startdocprinter(intptr hprinter, int level, ref docinfo pdocinfo); [dllimport( "winspool.drv ", charset = charset.unicode, exactspelling = true, callingconvention = callingconvention.stdcall)] public static extern long startpageprinter(intptr hprinter); [dllimport( "winspool.drv ", charset = charset.ansi, exactspelling = true, callingconvention = callingconvention.stdcall)] public static extern long writeprinter(intptr hprinter, string data, int buf, ref int pcwritten); [dllimport( "winspool.drv ", charset = charset.unicode, exactspelling = true, callingconvention = callingconvention.stdcall)] public static extern long endpageprinter(intptr hprinter); [dllimport( "winspool.drv ", charset = charset.unicode, exactspelling = true, callingconvention = callingconvention.stdcall)] public static extern long enddocprinter(intptr hprinter); [dllimport( "winspool.drv ", charset = charset.unicode, exactspelling = true, callingconvention = callingconvention.stdcall)] public static extern long closeprinter(intptr hprinter); } //点击按钮,直接输出字符串到远程打印机 private void button2_click(object sender, eventargs e) { if (printstr == " " ¦ ¦ printstr == null) { messagebox.show( "对不起,现在没有要打印的数据! "); } else { system.intptr lhprinter = new system.intptr(); docinfo di = new docinfo(); int pcwritten = 0; printdirect.openprinter( "\\\\192.168.112.5\\1150pcl 5e ", ref lhprinter, 0); printdirect.startdocprinter(lhprinter, 1, ref di); printdirect.startpageprinter(lhprinter); myreader = new stringreader(this.richtextbox1.text); try { printdirect.writeprinter(lhprinter, ds.tables[ "print "].rows[0][ "data "].tostring(), printstr.length, ref pcwritten); } catch (exception ee) { console.writeline(ee.message); } printdirect.endpageprinter(lhprinter); printdirect.enddocprinter(lhprinter); printdirect.closeprinter(lhprinter); } } } ps: 打印代码为: printdirect.writeprinter(lhprinter, ds.tables[ "print "].rows[0][ "data "].tostring(), printstr.length, ref pcwritten); ds.tables[ "print "].rows[0][ "data "].tostring()//这是一段带格式的字符串 |
|
|
|
|