为了项目的需要,我想在特定位置通过LPT1打印,这将在点阵打印机上打印一个文档,在应该放置值的位置打印。我真的很讨厌回头,也不知道从哪里开始。互联网上没有关于使用C#在LPT端口打印以及如何在打印时发送特定位置的值的具体信息。有没有好的例子?教程可以拯救生命。
为了项目的需要,我想在特定位置通过LPT1打印,这将在点阵打印机上打印一个文档,在应该放置值的位置打印。我真的很讨厌回头,也不知道从哪里开始。互联网上没有关于使用C#在LPT端口打印以及如何在打印时发送特定位置的值的具体信息。有没有好的例子?教程可以拯救生命。
我可以建议一件事情让您的生活更轻松,安装一个通用文本打印机驱动程序(这是标准的),并将其设置为LPT1端口。然后,您只需打开“LPT1”并发送转义代码序列来指定字体类型(粗体/斜体)、强调、字体间距等。我不知道是否需要资源。但我想应该是这样的:
using (System.IO.StreamWriter sr = new System.IO.StreamWriter(@"\\.\LPT1"))
{
sr.Write(0x1b);
sr.Write('k');
sr.Write('1');
sr.Write("Hello"); // print in Sans Serif
sr.WriteLine();
sr.Flush();
}
资源:
编辑于2017-07-12:更新了Parallel Port链接以使用Wayback Archive Machine。
这个打印机是否有适用于Windows的打印驱动程序呢?如果有,那么无论它是否通过LPT1进行打印,它都只是使用标准的打印功能。
类似的问题:C#中的点阵打印?
嘿,我在2019年刚买了一台点阵打印机,你现在仍然可以花5英镑购买打印带。
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
public class ParallelPrinter
{
[DllImport("kernel32.dll", SetLastError = true)]
static extern SafeFileHandle CreateFile(string lpFileName, FileAccess dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, FileMode dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);
public static void Print(string text)
{
using (SafeFileHandle fileHandle = CreateFile("LPT1:", FileAccess.Write, 0, IntPtr.Zero, FileMode.OpenOrCreate, 0, IntPtr.Zero))
{
if (fileHandle.IsInvalid == true)
throw new ApplicationException("Printer is Invalid");
using (FileStream stream = new FileStream(fileHandle, FileAccess.Write))
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.ASCII))
{
writer.Write(text);
}
}
}
}
}