从 Web 打印到 Epson LX 310 - 调整字体大小和类型以及正确的纸张大小

问题描述

我使用 QZ Tray (qz.io) 帮助我从 Web 浏览器直接打印到 EPSON LX 310 点阵打印机并使用连续表格进行打印。对于常规打印,它工作正常。

但是,我想要以下内容

  1. 更改字体大小和字体类型。我需要能够改变这一点,因为使用的连续表格已经印有模板。因此,我需要调整位置和字体大小以适应模板。

  2. 如何打印页面,以便完成后,纸张将完美地贴在撕纸线上(即我们只需要撕纸,而无需按下加载/弹出按钮)。

  3. 如何一次打印多页,但每一页都能完美贴合(不会越过撕裂线)?

我愿意接受除 qz 托盘以外的其他建议来解决此问题。

解决方法

我愿意接受除 qz 托盘以外的其他建议来解决此问题。

您描述的问题与 Epson LX300 系列打印机有关,与您用于打印的应用程序无关。这台打印机专门设计用于使用一个 "raw" 打印 of two language emulations

  • Epson ESC/P 命令仿真
  • IBM 2380 Plus/IBM PPDS 命令仿真

为了支持这台打印机使用原始命令序列,您首先需要选择一种“原始”语言,然后您需要在手册中搜索相应的命令。

为了回答这个问题,我假设您想使用 ESC/P 命令模拟。我还将假设您可以使用这些命令的“十六进制”版本(ESC/P 将引用 ASCII、十六进制和十进制,但大多数 QZ Tray“原始”教程都是针对十六进制编写的)。

  • 改变字体大小

    • 最常见的是使用 double-width and double-height

      var data = [
         '\0x1B' + '\0x57' + '\0x01' + // Enable double WIDTH printing
         '\0x1B' + '\0x57' + '\0x01' + // Enable double HEIGHT printing
      
         'Your double size text' +
      
         '\0x1B' + '\0x57' + '\0x00' // Disable double WIDTH printing
         '\0x1B' + '\0x57' + '\0x00' // Disable double HEIGHT printing
      ];
      
      // or shorthand
      // '\0x1B\0x57\0x01\0x1B\0x57\0x01' + 'Your double size text' + '\0x1B\0x57\0x00\0x1B\0x57\0x00'
      
    • 对于支持 ESC/P2 的打印机,您可以使用 scalable fonts using ESC X。由于这些命令的复杂性,本例中不包含。

  • 送纸到撕线

    换页: 将连续纸上的垂直打印位置推进到下一页的上边距位置。

    var data = [
        "\x0C"
    ];
    
  • 防止页面越过撕裂线:

    • 我相信是 ESC N documentation 允许您设置页边距。我从未尝试过这个命令,但语法是:
    var data = [
        '\x1B' + '\x4E' + 3 // Bottom of page has 3-line margin
    ];
    

总而言之,ESC/P 是一种非常高效且强大的原始打印语言,但是控制文档的行为需要研究相应的命令并将它们转换为“原始”命令。

为了在没有物理打印机的情况下测试其中一些命令,Kilgus 制作了一个 ESC/P2 emulator called QPCPrint