当前位置: 首页 > 知识库问答 >
问题:

C#使用自定义页面长度直接打印到兄弟标签打印机,无需bPac

蓝星辰
2023-03-14

我使用下面的代码成功地将标签直接打印到兄弟QL标签打印机。问题是打印机似乎忽略了我试图在运行时通过c#设置的自定义长度,以导致更长或更短的标签。我可以在Windows打印机设置中更改页面长度,但我无法在运行时设置自定义标签长度,这取决于我在特定标签上呈现的信息量。请注意,我知道我可以使用bPac打印可变长度的标签,但我真的很想摆脱使用他们的模板。我发现它们不必要地繁琐。好吧,没有必要,除非我无法设置自定义长度。

如有任何建议,我们将不胜感激。

感谢您的阅读。

以下是我使用的代码:

private void SingleLabel()
{
    label = new PrintDocument();

    PaperSize pS = new PaperSize("Custom Size", 242, 55);
    label.DefaultPageSettings.PaperSize = pS;
    label.PrinterSettings.PrinterName = "Label_1";
    label.PrinterSettings.DefaultPageSettings.PaperSize = pS;
    label.PrintPage += new PrintPageEventHandler(label_PrintPage);
    label.Print();
}

private void label_PrintPage(object sender, PrintPageEventArgs e)
{
    SolidBrush brush = new SolidBrush(Color.Black);
    Font header = new Font(FontFamily.GenericSansSerif, 12.0F, FontStyle.Bold);

    e.Graphics.DrawString("Hello World", header, brush, 0, 0);
}

共有1个答案

祝花蜂
2023-03-14

我是这样做的

   public void OnPagePrint(object sender, PrintPageEventArgs e)
   {
        var availableWidth = 220;
        var printAreaSize = DrawReceipt(availableWidth, e.Graphics, GetReceiptContent());
        e.PageSettings.PaperSize = new PaperSize("CustomPaperSize", (int)printAreaSize.Width + 10, (int)printAreaSize.Height);
    }

    public SizeF DrawReceipt(float availableWidth, Graphics graphics, StringBuilder sb)
    {
        var printText = new PrintText(sb.ToString(), new Font("Consolas", 8));
        var layoutArea = new SizeF(availableWidth, 0);
        SizeF stringSize = graphics.MeasureString(printText.Text, printText.Font, layoutArea, printText.StringFormat);
        RectangleF rectf = new RectangleF(new PointF(), new SizeF(availableWidth, stringSize.Height));
        graphics.DrawString(printText.Text, printText.Font, Brushes.Black, rectf, printText.StringFormat);

        foreach (var img in images)
        {
            graphics.DrawImage(img.Image, img.Location);
        }

        return stringSize;
    }
 类似资料:
  • 我想从web浏览器的Brother标签打印机打印标签。我知道DYMO有一个JavaScript框架,可以使从浏览器打印变得简单。但我有一个兄弟标签打印机的客户,所以我需要使它工作。 我一直在做一些测试和搜索,令人惊讶的是,关于这个主题的信息如此之少。 到目前为止,我唯一成功使用的浏览器是谷歌Chrome,因为它似乎不打印页眉和页脚。我已经安装了打印机/驱动程序,并创建了尺寸为62 x 29mm的自

  • 我有打印机驱动程序、P-touch编辑器、b-PAC 3.1和客户端工具,都是64位的,从Brother网站下载并安装在我的64位Windows 7笔记本电脑上。P-touch编辑器工作/打印良好。 然而,b-PAC失败,所有样本均无效。我调试了代码: 其中,

  • 我有一台新的标签打印机(Brother QL 570),它支持无穷无尽的纸张。我的想法是,我可以通过打印尽可能多的纸张来节省纸张——错了!打印机的纸张尺寸为63mm x 100mm和63mm x 29mm(以及其他一些),但我需要63mm x“felxible length”或类似63mm x 40mm的东西。 我该怎么改变呢?我将从OpenOffice打印。 谢谢 (驱动程序为CUPS,使用Mi

  • 从浏览器到兄弟标签打印机 我想从web浏览器将标签打印到Brother标签打印机。我知道DYMO有一个JavaScript框架,可以使从浏览器打印变得简单。但我有一个兄弟标签打印机的客户,所以我需要使它工作。 所以使用谷歌Chrome因为它似乎不会打印页眉和页脚。我已经在笔记本电脑中安装了打印机/驱动程序,并创建了一个自定义纸张尺寸,尺寸为62毫米x 100毫米。但是标签文本不太清楚。我得到了模糊

  • 我使用P-touch Editor 5.1设计了一个布局文件并将其保存为P-touch布局(. lbx)文件。它在我的C#项目中不起作用。 使用此布局文件时,我无法在我的C#项目中设置条形码数据和文本标签。 我的问题是在C程序中设置属性。如何找到模板的属性?以下代码不起作用: 打印的标签不包含新数据。它在设计时打印与模板中设置的数据相同的数据。 任何帮助都将不胜感激。

  • 我正在使用适用于Android的兄弟打印SDK。我的代码基于手册中所示的示例代码: } 当打印机的盖子打开时,flushPTTPrint()函数会立即返回,状态为ERROR\u cover\u open。这太棒了。 当打印机没有纸时,flushPTTPrint()函数仅在大约三分钟后返回,状态为ERROR_COMMUNICATION_ERROR。不太好。 问题:如何检测打印机何时缺纸?任何方法都可