- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我必须能够按列名称的顺序打印 ListView 中的所有项目,如下所示: 开始:(日期)结束日期)类次:(类次编号)销售:(销售额) 它可以完美地打印我需要的内容,但它只打印第一页(或 ListVie
我在使用带边距的 PrintDocument 时遇到问题。 无论我做什么,我打印的所有内容总是有边距,这意味着没有任何内容在需要的地方对齐。 这是我用来创建 PrintDocument 的代码 pub
我正在尝试使用 printdocument 从数据库中打印数据,我将其打印到指定范围内的数据,但仍有两处出错 仍然没有按预期工作的事情是 在打印时,如果页面几乎被完全使用,它会添加一个空白页面,上面只
我有一个打印多个文档的方法 (PrintIts)。它工作得很好,除了在第一次打印完成后,第二次打印包括在它上面的第一次打印。就像第二张打印品上有两层一样。第三张打印品,在其上方包括第一张和第二张(就好
一些上下文:我正在开发一个 Windows 窗体应用程序,其中包含用户打印一些信息的功能。 问题是该信息的大小会不时发生变化:有时它可以放在一个页面上,有时它可以超过 20 页。 对于打印,我使用的是
我在“C://”中有位图,名称为“1.bmp”、“2.bmp”、“3.bmp”等,我正在尝试打印这些图像,但打印文档是空的(图像在正确的路径中) 这是我的代码: private void button
我正在尝试使用以下代码获取 PointOfSale 打印机的打印机状态: Hashtable properties = new Hashtable(); ManagementObjectSearche
我的问题是我创建了一个“扩展的”RichTextBox 控件,该控件使用 native API 来添加标准控件中缺少的许多 RichEdit 功能(即:修改选择的单个字体属性而不更改另一个字体属性、打
我在尝试允许用户设置报告的边距时遇到了很糟糕的情况。现在我对它进行了硬编码,但我更愿意在运行时设置它们,以便可以更改它们。我试过这个: Private Sub rotHCReport_BeginPri
如何将 PrintDocument 与可滚动面板一起使用? 这是我的一些代码: MemoryImage = new Bitmap(pnl.Width, pnl.Height); Rectangle r
如何将 PrintDocument 与可滚动面板一起使用? 这是我的一些代码: MemoryImage = new Bitmap(pnl.Width, pnl.Height); Rectangle r
我正在尝试使用 CHtmlEditCtrl::PrintDocument() 的方法打印文档如此处所述(Printing In MFC Application)。下面是我的测试代码,我打算在其中打印一
我正在使用 PrintDocument 类打印到我的 Brother 标签打印机。当我执行 Print() 方法时,打印机开始闪烁红色错误指示灯,但其他一切都返回成功。 我可以在我的激光打印机上运行同
我在 C# 中创建了一个 PrintDocument,我可以打印它,但现在我想将它保存到一个文件中。可以保存为word文档吗? 最佳答案 根据您的意图,这可能会有用: 如果您的目标是在以后重印它,这将
我有以下图片框,我用条形码填充然后尝试打印。 代码如下: private void button1_Click(object sender, EventArgs e) { printDocum
我有 C# 项目(ASP.NET MVC 项目中的 ClassLibrary) 我想使用 PrintDocument 将图像 (System.Drawing.Image) 打印到文件中 private
我正在尝试打印发票。发票应该能够打印在多页上,但这就是问题所在。我可以在单页上完美地打印发票,但是一旦发票不适合单页打印,打印作业就会退出第一页。 这是我正在使用的代码。 'artikelen'是一个
我正在使用 C# 和 Winforms 创建一个应用程序,现在我需要在热敏打印机上打印销售收据。为此,我正在创建一个文本文件并读取它以使用 PrintDocument 进行打印,但我无法执行此操作,因
在我的 WinForms 应用程序中,可以在许多位置打印数据。每次用户想要打印时,我都会创建一个新的 PrintDocument 实例,用于当前的打印作业,然后将其处理掉。一切正常,但“打印”对话框始
有没有办法以编程方式仅打印 System.Drawing.Printing.PrintDocument 中的选定页面(例如第 3-5 页)? 我正在使用这段代码: myPrintDocument.Pr
我是一名优秀的程序员,十分优秀!