You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用fpdf+fpdi向现有PDF写入条形码显示乱码问题求助

问题根因

你使用的bar128()函数输出的是HTML格式的条形码渲染代码,仅可在浏览器中正常解析显示,而FPDF的Write()、Cell()均为纯文本输出方法,无法识别HTML标签,直接传入就会把HTML源码当文本输出,也就是你看到的“乱码”效果。

可行解决方案
  • 第一步:更换条形码生成逻辑,改用支持生成PNG/GIF等图片格式的Code128生成类,不要用输出HTML的版本。
  • 第二步:将生成的条形码图片保存为本地临时文件(对新手推荐存临时文件,操作更稳妥,也可直接传入二进制流)。
  • 第三步:调用FPDI自带的Image()方法插入条形码图片到PDF指定位置,不要使用文本输出方法。
修正后代码示例
<?php
session_start();
$serialnumber = $_SESSION['serialnumber'];

// 此处替换为你用的生成图片格式条形码的代码,示例为生成临时条码文件barcode_temp.png
// 示例(用php-barcode-generator库):
// $generator = new Picqer\Barcode\BarcodeGeneratorPNG();
// file_put_contents('barcode_temp.png', $generator->getBarcode($serialnumber, $generator::TYPE_CODE_128));

include('lib/FPDI-2.3.6/src/autoload.php');
require('lib/fpdf184/fpdf.php');
require('lib/FPDI-2.3.6/src/fpdi.php');
$pdf = new Fpdi();

$pagecount= $pdf->setSourceFile("lib/test3.pdf");
$tpl = $pdf->importPage(1);
$pdf->AddPage();
$pdf->useTemplate($tpl);

// 插入条形码图片,参数依次为 图片路径、X坐标、Y坐标、宽度、高度,可根据实际需求调整数值
$pdf->Image('barcode_temp.png', 0, 5, 60, 15);

$pdf->Output();

// 可选:生成PDF后删除临时条码文件
unlink('barcode_temp.png');
?>
注意事项
  • 要保证临时文件保存目录有可写权限,避免生成图片失败
  • 插入图片时的坐标、尺寸参数可根据你PDF里需要放条码的位置自由调整
  • 如果不想生成临时文件,也可将图片二进制流通过data URI的方式传给Image方法,兼容更高版本的FPDF

内容的提问来源于stack exchange,提问作者Saeed Eisakhani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:36:03