如何使用PrintDocument从打印机中捕获错误?

斯科蒂

我正在使用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文件有很多选择。如果调试诸如边距之类的计算,则创建一个可以查看的输出而不是内存中的输出。您可以查看PDF,看它是否古怪。请记住,在PC上的外观可能与输出略有不同,尤其是在边缘附近打印时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从打印机打印份数

来自分类Dev

检索使用C#从打印机打印的文档

来自分类Dev

如何从打印机变量获取纸张尺寸?

来自分类Dev

如何减小从打印机发起的扫描的文件大小?

来自分类Dev

如何将PrintDocument .PrinterSettings保存在文件中,以使用户不必每次都选择打印机设置?

来自分类Dev

使用PrintDocument打印到收据打印机不会打印所有内容

来自分类Dev

如何确定打印机使用的协议

来自分类Dev

如何使用打印机的字体从java中使用行式打印机进行打印?

来自分类Dev

PrintDocument.PrinterSettings.Print()更改默认打印机

来自分类Dev

如何从网络中未安装系统的打印机中获取打印机?

来自分类Dev

通过 SNMP Batch 从打印机获取碳粉量

来自分类Dev

如何使用打印机在Java中打印保存的txt文件

来自分类Dev

如何使用图像作为徽标,Java在打印机中打印账单

来自分类Dev

如何在TSC打印机中打印图像

来自分类Dev

我该如何删除打印中的打印机图像?

来自分类Dev

如何使用OpenOffice oleautomation选择要打印的打印机?

来自分类Dev

如何使用JavaPOS通过Epson打印机打印收据?

来自分类Dev

如何使用双面打印机打印双面纸?

来自分类Dev

如何移除打印机?

来自分类Dev

如何卸下打印机?

来自分类Dev

Xenial中的lsb3.2 Epson打印机错误

来自分类Dev

在 gdb 中获取回溯漂亮的打印机错误

来自分类Dev

设置/设备/打印机中的打印机加倍

来自分类Dev

如何使用Java中的收据打印机和ESC / POS命令提高速度

来自分类Dev

如何识别Windows 10中使用的特定打印机驱动程序

来自分类Dev

如何在Linux中设置帐户和密码以使用网络打印机

来自分类Dev

如何在Ubuntu 12.04中添加网络打印机?

来自分类Dev

如何从系统中未安装的网络获取打印机?

来自分类Dev

如何摆脱Gnome中的Ghost打印机?

Related 相关文章

  1. 1

    如何从打印机打印份数

  2. 2

    检索使用C#从打印机打印的文档

  3. 3

    如何从打印机变量获取纸张尺寸?

  4. 4

    如何减小从打印机发起的扫描的文件大小?

  5. 5

    如何将PrintDocument .PrinterSettings保存在文件中,以使用户不必每次都选择打印机设置?

  6. 6

    使用PrintDocument打印到收据打印机不会打印所有内容

  7. 7

    如何确定打印机使用的协议

  8. 8

    如何使用打印机的字体从java中使用行式打印机进行打印?

  9. 9

    PrintDocument.PrinterSettings.Print()更改默认打印机

  10. 10

    如何从网络中未安装系统的打印机中获取打印机?

  11. 11

    通过 SNMP Batch 从打印机获取碳粉量

  12. 12

    如何使用打印机在Java中打印保存的txt文件

  13. 13

    如何使用图像作为徽标,Java在打印机中打印账单

  14. 14

    如何在TSC打印机中打印图像

  15. 15

    我该如何删除打印中的打印机图像?

  16. 16

    如何使用OpenOffice oleautomation选择要打印的打印机?

  17. 17

    如何使用JavaPOS通过Epson打印机打印收据?

  18. 18

    如何使用双面打印机打印双面纸?

  19. 19

    如何移除打印机?

  20. 20

    如何卸下打印机?

  21. 21

    Xenial中的lsb3.2 Epson打印机错误

  22. 22

    在 gdb 中获取回溯漂亮的打印机错误

  23. 23

    设置/设备/打印机中的打印机加倍

  24. 24

    如何使用Java中的收据打印机和ESC / POS命令提高速度

  25. 25

    如何识别Windows 10中使用的特定打印机驱动程序

  26. 26

    如何在Linux中设置帐户和密码以使用网络打印机

  27. 27

    如何在Ubuntu 12.04中添加网络打印机?

  28. 28

    如何从系统中未安装的网络获取打印机?

  29. 29

    如何摆脱Gnome中的Ghost打印机?

热门标签

归档