当前位置:首页 > PHP

php实现打印票据

2026-02-14 00:25:34PHP

PHP 实现打印票据的方法

使用 PHP 直接生成打印内容

PHP 可以通过生成 HTML 或文本格式的内容,直接输出到打印机。以下是一个简单的示例:

<?php
// 设置内容类型为纯文本
header('Content-Type: text/plain');

// 票据内容
$receipt = "=== 收据 ===\n";
$receipt .= "日期: " . date('Y-m-d H:i:s') . "\n";
$receipt .= "项目: 商品A\n";
$receipt .= "数量: 1\n";
$receipt .= "价格: 100元\n";
$receipt .= "================\n";

// 输出到浏览器或打印机
echo $receipt;
?>

使用 TCPDF 或 FPDF 生成 PDF 票据

TCPDF 和 FPDF 是常用的 PHP 库,用于生成 PDF 文件,适合打印票据。

安装 TCPDF:

composer require tecnickcom/tcpdf

示例代码:

<?php
require_once('tcpdf/tcpdf.php');

// 创建 PDF 对象
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);

// 设置文档信息
$pdf->SetCreator('POS System');
$pdf->SetAuthor('POS System');
$pdf->SetTitle('收据');

// 添加一页
$pdf->AddPage();

// 设置字体
$pdf->SetFont('stsongstdlight', '', 12);

// 添加内容
$pdf->Cell(0, 10, '=== 收据 ===', 0, 1);
$pdf->Cell(0, 10, '日期: ' . date('Y-m-d H:i:s'), 0, 1);
$pdf->Cell(0, 10, '项目: 商品A', 0, 1);
$pdf->Cell(0, 10, '数量: 1', 0, 1);
$pdf->Cell(0, 10, '价格: 100元', 0, 1);
$pdf->Cell(0, 10, '================', 0, 1);

// 输出 PDF 文件
$pdf->Output('receipt.pdf', 'I');
?>

使用 ESC/POS 指令打印小票

对于热敏打印机,可以使用 ESC/POS 指令直接控制打印机。

php实现打印票据

安装 escpos-php:

composer require mike42/escpos-php

示例代码:

<?php
require __DIR__ . '/vendor/autoload.php';
use Mike42\Escpos\Printer;
use Mike42\Escpos\PrintConnectors\FilePrintConnector;

try {
    // 连接到打印机(Windows 使用共享打印机,Linux 使用设备文件)
    $connector = new FilePrintConnector("//localhost/POS Printer");
    $printer = new Printer($connector);

    // 打印内容
    $printer->text("=== 收据 ===\n");
    $printer->text("日期: " . date('Y-m-d H:i:s') . "\n");
    $printer->text("项目: 商品A\n");
    $printer->text("数量: 1\n");
    $printer->text("价格: 100元\n");
    $printer->text("================\n");

    // 切纸
    $printer->cut();

    // 关闭连接
    $printer->close();
} catch (Exception $e) {
    echo "打印失败: " . $e->getMessage();
}
?>

使用 JavaScript 调用浏览器打印功能

如果票据需要在浏览器中打印,可以结合 PHP 和 JavaScript。

php实现打印票据

PHP 生成 HTML:

<?php
echo '<html>
<head>
    <title>收据</title>
    <style>
        @media print {
            body { font-family: Arial; font-size: 12pt; }
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <h3>=== 收据 ===</h3>
    <p>日期: ' . date('Y-m-d H:i:s') . '</p>
    <p>项目: 商品A</p>
    <p>数量: 1</p>
    <p>价格: 100元</p>
    <p>================</p>
    <button class="no-print" onclick="window.print()">打印</button>
</body>
</html>';
?>

使用 PHP 打印到网络打印机

通过 PHP 的 fsockopen 可以直接发送数据到网络打印机。

示例代码:

<?php
$printer_ip = '192.168.1.100';
$printer_port = 9100;

$receipt = "=== 收据 ===\n";
$receipt .= "日期: " . date('Y-m-d H:i:s') . "\n";
$receipt .= "项目: 商品A\n";
$receipt .= "数量: 1\n";
$receipt .= "价格: 100元\n";
$receipt .= "================\n";

$fp = fsockopen($printer_ip, $printer_port, $errno, $errstr, 10);
if (!$fp) {
    echo "无法连接到打印机: $errstr ($errno)";
} else {
    fwrite($fp, $receipt);
    fclose($fp);
    echo "打印任务已发送";
}
?>

注意事项

  • 确保打印机已正确安装并配置。
  • 热敏打印机需要支持 ESC/POS 指令。
  • 网络打印机需要开放对应的端口(通常是 9100)。
  • 对于浏览器打印,用户需要手动点击打印按钮。

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

相关文章

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Rat…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php实现推送消息推送消息

php实现推送消息推送消息

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