当前位置:首页 > PHP

php实现小票打印

2026-02-14 00:53:29PHP

PHP 实现小票打印的方法

使用 ESC/POS 指令直接打印

ESC/POS 是一种常见的打印机指令集,适用于热敏打印机和点阵打印机。PHP 可以通过发送原始指令控制打印机。

// 连接打印机(假设通过 USB 或网络)
$printer = fopen("php://temp", "r+");

// 发送初始化指令
fwrite($printer, "\x1B\x40");

// 设置居中打印
fwrite($printer, "\x1B\x61\x31");

// 打印标题
fwrite($printer, "=== 销售小票 ===\n");

// 设置左对齐
fwrite($printer, "\x1B\x61\x30");

// 打印商品信息
fwrite($printer, "商品1     10.00\n");
fwrite($printer, "商品2     20.00\n");

// 打印总计
fwrite($printer, "----------------\n");
fwrite($printer, "总计:     30.00\n");

// 切纸
fwrite($printer, "\x1D\x56\x41\x03");

fclose($printer);

使用现成的 PHP 库

mike42/escpos-php 是一个流行的 PHP 库,封装了 ESC/POS 指令。

php实现小票打印

require __DIR__ . '/vendor/autoload.php';
use Mike42\Escpos\Printer;
use Mike42\Escpos\PrintConnectors\NetworkPrintConnector;

try {
    $connector = new NetworkPrintConnector("192.168.1.100", 9100);
    $printer = new Printer($connector);

    $printer->setJustification(Printer::JUSTIFY_CENTER);
    $printer->text("=== 销售小票 ===\n");

    $printer->setJustification(Printer::JUSTIFY_LEFT);
    $printer->text("商品1     10.00\n");
    $printer->text("商品2     20.00\n");

    $printer->text("----------------\n");
    $printer->text("总计:     30.00\n");

    $printer->cut();
    $printer->close();
} catch (Exception $e) {
    echo "打印失败: " . $e->getMessage();
}

通过浏览器打印

如果需要从网页打印小票,可以使用 JavaScript 的 window.print() 方法。

php实现小票打印

// PHP 生成 HTML 小票
echo '<div id="receipt" style="width:80mm; font-family: monospace;">
    <h2 style="text-align:center;">=== 销售小票 ===</h2>
    <p>商品1     10.00</p>
    <p>商品2     20.00</p>
    <hr>
    <p>总计:     30.00</p>
</div>';

// JavaScript 打印
echo '<script>window.onload = function() { window.print(); }</script>';

使用 CUPS 打印服务

在 Linux 系统上,可以通过 CUPS 服务打印。

// 生成 PDF 或文本文件
file_put_contents('/tmp/receipt.txt', "=== 销售小票 ===\n商品1     10.00\n商品2     20.00\n总计:     30.00");

// 使用 lpr 命令打印
exec('lpr -P receipt_printer /tmp/receipt.txt');

云打印解决方案

对于云打印需求,可以使用 Google Cloud Print 或其他云打印 API。

$receiptContent = "=== 销售小票 ===\n商品1     10.00\n商品2     20.00\n总计:     30.00";
$printJob = array(
    'title' => '销售小票',
    'content' => base64_encode($receiptContent),
    'contentType' => 'text/plain'
);

// 发送到云打印服务
$ch = curl_init('https://www.google.com/cloudprint/submit');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $printJob);
curl_exec($ch);
curl_close($ch);

注意事项

  • 确保打印机支持 ESC/POS 指令集
  • 网络打印机需要正确配置 IP 和端口
  • 浏览器打印需要用户确认
  • 云打印服务可能需要 OAuth 认证

标签: 小票php
分享给朋友:

相关文章

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…

php实现域名

php实现域名

PHP实现域名操作的方法 获取当前域名 使用$_SERVER['HTTP_HOST']可以获取当前访问的域名: $currentDomain = $_SERVER['HTTP_HOST']; ech…