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

使用mPDF打印预印表单后续打印偏移问题(Epson LQ-690)

问题

使用mPDF生成与预印表单对齐的销售发票PDF,重置打印机后首次打印对齐精准,但再次打印同一或其他销售发票时,打印内容出现偏移,与预印表单无法对齐。所有发票的PDF打印预览均正确且一致,但每页打印的对齐情况都不同。采用的是210mm×290mm的自定义纸张尺寸,打印机为Epson LQ-690针式打印机。请问该问题是由mPDF代码导致还是打印机硬件问题?应如何解决以确保所有打印的对齐一致性?

使用的mPDF设置代码:

$mpdf = new \Mpdf\Mpdf([
    'margin_header' => 0,
    'margin_footer' => 0,
    'margin_top' => 0,
    'margin_left' => 0,
    'margin_right' => 0,
    'margin_bottom' => 0,
    'format' => [210, 290], // Custom page size in mm (width, height)
    'default_font' => 'Myriad Pro',
    'default_font_size' => 10,
    'keep_table_proportions' => true, 
    'autoPageBreak' => true, 
    'shrink_tables_to_fit' => 1,
    'SetAutoPageBreak' => true,
    'setAutoTopMargin' => 'stretch', 
    'setAutoBottomMargin' => 'stretch', 
    'adjust_font_disparity' => true, 
]);

// Additional settings to ensure consistent margins
$mpdf->SetMargins(0, 0, 0);
$mpdf->SetAutoPageBreak(true, 0);
$mpdf->SetDisplayMode('fullpage');

$mpdf->SetHTMLHeaderByName('Header');
$mpdf->SetHTMLFooterByName('Footer');
$mpdf->SetTitle('INVOICE');
$mpdf->SetSubject('INVOICE');
$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;
$mpdf->WriteHTML($htmlContent);
$mpdf->SetHTMLFooterByName('Footer');
ob_clean();
$mpdf->Output();
分析与解决方案

问题根源判断

大概率不是mPDF代码问题——预览一致、首次打印正常,说明PDF文件本身的尺寸和内容定位没有问题,后续打印偏移的核心原因集中在打印机的纸张定位逻辑、缓存或驱动设置上。


一、打印机端核心修复步骤

  • 锁定自定义纸张尺寸:在打印机驱动中,将210×290mm的自定义尺寸设为默认纸张,确保每次打印都调用该尺寸,避免打印机自动匹配相近标准纸(如A4)导致偏移。
  • 微调物理进纸定位:Epson LQ-690机身带有进纸调节杆,可根据打印偏移方向(左/右、上/下)微调进纸位置,多次打印测试页直到对齐稳定。
  • 清空打印机缓存:重启打印机或清除打印队列中的所有任务,避免旧的纸张设置缓存干扰新打印任务。
  • 更新打印机驱动:前往Epson官网下载安装LQ-690的最新驱动,旧驱动可能存在自定义纸张尺寸的兼容性BUG。

二、mPDF代码优化(辅助保障)

虽然代码不是问题核心,但可调整参数消除潜在隐患:

  • 移除重复设置:代码中重复定义了autoPageBreak相关参数,保留一处即可,避免冲突:
    $mpdf = new \Mpdf\Mpdf([
        // ...其他参数
        'autoPageBreak' => true,
        'autoPageBreakMargin' => 0, // 直接在这里设置页边距,替代后续的SetAutoPageBreak
        // ...其他参数
    ]);
    // 删除后续重复的$mpdf->SetAutoPageBreak(true, 0);
    
  • 禁用自动边距拉伸:setAutoTopMargin和setAutoBottomMargin设为'stretch'可能导致打印时内容被自动调整,改为固定值:
    'setAutoTopMargin' => 'pad',
    'setAutoBottomMargin' => 'pad',
    
  • 明确输出参数:输出时指定文件类型,确保PDF尺寸信息被正确传递给打印机:
    $mpdf->Output('invoice.pdf', 'I');
    

三、打印流程规范

  • 每次打印前手动确认打印对话框中的纸张尺寸为自定义的210×290mm,不要依赖默认设置。
  • 切换打印不同尺寸纸张时,清空打印机内的剩余纸张,重新装入预印表单,避免进纸传感器误判。

内容的提问来源于stack exchange,提问作者KL Codes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:42:06