如何使用 TCPDF 从顶部开始打印(热敏 58)PHP

How to print (thermal 58) starting from the top position using TCPDF PHP

我正在尝试使用 php (tcpdf) 创建发票,但热敏(58 打印)格式的结果总是出现在中间位置。

如何从顶部开始打印?

示例代码:

<?php
require("fpdf/fpdf.php");
include_once "connectdb.php";

$pdf = new FPDF ('P','mm',array(80,145));
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(60,8,'AmmadMaf POS',1,1,'C');
$pdf->SetFont('Arial','B',8);
$pdf->Cell(60,5,'Block 5 Saadi Town, Karachi',0,1,'C');
$pdf->Cell(60,5,'Contact : +92 3222563301',0,1,'C');
$pdf->Cell(60,5,'E-mail Address : ammadfarooqengr@gmail.com',0,1,'C');
$pdf->Cell(60,5,'fb.com/ammadmaf',0,1,'C');
. bla . .
. bla . .
. bla . .
$pdf->Output();
?>

不要尝试将无单位 PDF 打印到热敏打印机,您将尝试将页面语言发送到 esc/POS 滚动式 203 DPI 打印机,该打印机通过使用滚刀切割器具有可变长度。如果您必须使用 PDF,请确保内容与卷筒宽度和切割长度相匹配(比说的更难)@正确的单色像素分辨率,您可能仍然经常会看到带有锯齿的别名图形。

您的关键问题是 打印输出的页面定义为 128 英寸高(1 整页高度 = 1 卷长度)因此您需要一种不是为页面设计的格式和驱动程序。

对于 Zj 打印机,在 https://github.com/futurelink/cups-thermo-printer or https://github.com/klirichek/zj-58 有 Cups 系统替代驱动程序,制造商提供多 windows 版本的 XP 到 10 驱动程序供打印机使用。

通常我会推荐使用 SeaGull BarTender 进行 Windows USB 热敏打印,但该型号未明确支持 https://www.seagullscientific.com/support/downloads/drivers/

理想情况下,您应该使用打印机自己的 esc/POS 热语言变体,因为它可以直接通过端口直接运行文本或 esc/POS 二进制文件,而不是通过慢得多的系统驱动程序将 PDF 翻译成 PDF单色 escodes/text/bitmap 慢速假脱机流。 打印机流不会是 %PDF- 它会看起来像

p @P@B

v0 0  yï¾ûï¾ûï¾ûï

它应该包含“打开抽屉”和“在打印结束时停止滚动”,加上 blade 启用绘图仪的“切纸”命令。一个好的 esc/POS SDK 将包括模板设计器,以确保文本和图形像素完美。这个 Epson 模板设计器可以生成可编辑的 XML 结构,用于简单的 Web javascript。

您说您仍然想要原始问题的答案,在这种情况下,一种选择是强制打印页面到纸卷页面的顶部,并具有自定义的下边距!请注意,看不到任何切口,所以我希望整个页面都被弹出。

我建议使用或编写合适的 ESC/POS 驱动程序;例如:https://github.com/klirichek/zj-58 甚至还有官方驱动程序和移动 SDK:http://www.zjiang.com/en/init.php/service/driver
连同 PHP 库,例如。 escpos-php,以便最终控制打印机。

通常有页面模式和行模式。使用转义序列直接控制打印机可以完全控制换行、切纸器和现金抽屉。在输入金额后用钥匙打开现金抽屉并不是它的工作方式(这就是这种有问题的方法会导致的地方)。只需使用任何等宽字体渲染到 HTML 即可进行 on-screen 预览。