gpt4 book ai didi

c# - 如何使用 PrintDocument 从我的打印机捕获错误?

转载 作者:行者123 更新时间:2023-11-30 20:53:35 25 4
gpt4 key购买 nike

我正在使用 PrintDocument 类打印到我的 Brother 标签打印机。当我执行 Print() 方法时,打印机开始闪烁红色错误指示灯,但其他一切都返回成功。

我可以在我的激光打印机上运行同样的代码,一切正常。

如何查看导致我的标签打印机出现错误的原因?

代码:

public class Test
{
private Font printFont;
private List<string> _documentLinesToPrint = new List<string>();

public void Run()
{
_documentLinesToPrint.Add("Test1");
_documentLinesToPrint.Add("Test2");
printFont = new Font("Arial", 10);
var pd = new PrintDocument();
pd.DefaultPageSettings.Margins = new Margins(25, 25, 25, 25);
pd.DefaultPageSettings.PaperSize = new PaperSize("Label", 400, 237);

var printerSettings = new System.Drawing.Printing.PrinterSettings();
printerSettings.PrinterName ="Brother QL-570 LE";
pd.PrinterSettings = printerSettings;
pd.PrinterSettings.Copies = 1;
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
pd.Print();
}

// The PrintPage event is raised for each page to be printed.
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = ev.MarginBounds.Left;
float topMargin = ev.MarginBounds.Top;
string line = null;

// Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height /
printFont.GetHeight(ev.Graphics);

// Print each line of the file.
while ((count < linesPerPage) && (count < _documentLinesToPrint.Count))
{
line = _documentLinesToPrint[count];

yPos = topMargin + (count *
printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());

line = null;
count++;
}

// If more lines exist, print another page.
if (line != null)
ev.HasMorePages = true;
else
ev.HasMorePages = false;
}
}

最佳答案

PrintDocument 是一个非常基本的 API。您可以获得简单的通用打印,但它是以减少并非特定于打印驱动程序的功能为代价的。我的 HP 打印机通常给我打印错误而不是异常。看到类似的事情发生在你身上并不奇怪。

闪烁可能是您可以查找的代码。如果失败,您可以尝试保存为图像格式、PDF 或 XPS。或者使用第三方库或自己编写 PCL file .有很多选择。创建一个你可以查看的输出而不是内存中的输出应该调试像边距这样的计算。您可以查看 PDF,看看它看起来是否古怪。请记住,它在 PC 上的显示方式可能与输出略有不同,尤其是在靠近边缘打印时。

关于c# - 如何使用 PrintDocument 从我的打印机捕获错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19847420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com