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

系统图纸。在自定义标签大小的.NET Core 3.1中打印(Brother QL-570)

丁阳炎
2023-03-14

我目前正在尝试从Linux上的兄弟QL-570标签打印机上的. NET Core 3.1控制台应用程序打印。

我的代码如下:

    class Program
    {
        static void Main(string[] args)
        {
            var printer = args.Length > 0 ? args[0] : "Brother QL-570";

            using (PrintDocument pd = new PrintDocument())
            {
                var s = new PaperSize("Custom", 244, 300);
                s.RawKind = 256;
                pd.PrinterSettings.PrinterName = printer;
                pd.DefaultPageSettings.PaperSize = s;
                pd.DefaultPageSettings.Margins = new Margins(12, 12, 12, 12);
                pd.DefaultPageSettings.Landscape = false;
                pd.OriginAtMargins = true;
                pd.DocumentName = "Label";
                pd.OriginAtMargins = true;


                Console.WriteLine(pd.DefaultPageSettings.PaperSize);
                Console.ReadLine();

                pd.PrintPage += Pd_PrintPage;


                if (!pd.PrinterSettings.IsValid)
                {
                    Console.WriteLine("Invalid printer settings.");
                    return;
                }

                pd.Print();

            }

            Console.ReadLine();
        }

        private static void Pd_PrintPage(object sender, PrintPageEventArgs e)
        {
            Console.WriteLine($"Res: {e.PageSettings.PrinterResolution}");
            Console.WriteLine($"pa: {e.PageSettings.PrintableArea}");
            Console.WriteLine($"bounds: {e.PageBounds}");
            Console.WriteLine($"mb: {e.MarginBounds}");
            Console.WriteLine(e.PageSettings.PaperSize);

            e.HasMorePages = false;
            var b = e.MarginBounds;

            e.Graphics.PageUnit = GraphicsUnit.Display;
            
            e.Graphics.DrawRectangle(new Pen(Brushes.Black, 12), b.X, b.Y, b.Width, b.Height);
        }
    }

(尝试运行时,将打印机名称作为第一个命令行参数传递)

其目的是在62mm无头卷轴上打印一个62mm宽、3英寸(76,2mm)长的标签。在该标签上,外部打印边距应使用黑色矩形绘制。

情况:

  1. 在Windows上执行时,一切正常。即使将Windows连接到在我的Raspberry PI上的CUPS上运行的标签打印机,标签也会很好,输出与预期的一样。
  2. 在Linux时,一切都不起作用。打印机闪烁红色,没有打印标签。有趣的是,在PrintPage-Event中,PrintMargins在Linux上为空(X=Y=Width=Height=0),而在Windows上则填写正确的值。硬边距属性也是如此。

我正在使用Raspberry PI上的打印机驱动程序ptouch包作为brother P-Touch QL-570的驱动程序。在.NET Core中,我使用System.Drawing。使用PrintDocumentAPI的通用包。

你能为我提供以下方面的更多信息或细节吗?

  • 这可能是驱动程序问题还是C#问题?
  • 我指定自定义纸张大小的方式对Linux也有效吗?

共有1个答案

钱运浩
2023-03-14

我有同样的问题,原来你需要打开 /etc/cups/ppd/Brother-(你的版本). ppd然后添加你想要使用的自定义提要到该文件...我想使用29x90和编辑的文件读取...*页面大小29x90/29mmx90(1.1"x3.5):之后,我去打印机设置,并选择了正确的页面设置,然后应用程序工作...

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

  • 我可以使用命令lp-o DymoPrintQuality=Text-o PageSize=w54h144-o横向-n 1-d Dymo400Turbo/tmp/test打印单个标签。txt。 当我使用命令lp-n2-o DymoPrintQuality=Text-o PageSize=w54h144-o横向-d Dymo400Turbo/tmp/test时。它打印一个标签,而不是2个。 我已经测试

  • 我正在开发一个必须打印标签的应用程序。我使用的标签打印机是Brother QL-570。标签宽度是66mm,标签长度需要大约45mm。我遇到的问题是,我无法配置应用程序以实际打印标签。每次这样做时,我都会收到一条警告,说明文档大小对于打印机来说太大。无论我尝试将打印文档的大小更改为什么大小,我总是收到一条警告,说明文档为90mm x 29mm,对于标签打印机来说太大了。 以下是我的一个尝试: 有人

  • 我在标签打印机上打印时遇到了问题。下面的代码在一个上打印4个“标签”(附标签图片)。 下面的代码打印到兄弟QL-500标签打印机上。它打印到3.5"乘1.1"标签上。 如果有人能帮我更好地理解代码,那也太好了。 下面是它打印的内容:

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

  • Home assistant 支持设备显示的高度自定义,你可以给设备更换昵称、图标、图标以及隐藏设备等。 设置方法 设备的个性化由 customize 模块定义,默认配置文件 configuration.yaml 中 customize 位于 homeassistant模块下: homeassistant: # 名称,可为中文 name: 家 # 纬度 latitude: !sec