定位与重现打印问题
- 通过 打印预览 功能在大多数情况就能重现打印问题
- chrome浏览器自带打印预览功能(支持设置纸张大小,边距,缩放)
- 火狐浏览器打印预览功能需要安装插件,自带全局设置页面边距功能
- 火狐浏览器设置全局页边距:
开启菜单栏 -> 文件 -> 页面设置 -> 页边距和页眉/页脚
跳页
- 地址贴大了会跳,纸张设置小了也会跳
- 纸张宽度,长度需要设置足够,尽量按标准设置
- 本身地址贴留的余量较少,这种情况可适当缩小地址贴(css scale, 加边距)
- 常用纸张宽度数值:
4x2: 101.6mm x 50.8mm
4x4: 101.6mm x 101.6mm
4x6: 101.6mm x 152.4mm
- css设置示例:
.packing_slip { transform: scale(0.98); }
.packing_slip { margin-left: 1mm; margin-right: 1mm; }
.packing_slip { margin-top: 1mm; }
canvas { margin-left: 3mm; margin-right: 3mm; }
@page { margin: 0 2mm 0 2mm; }
不清晰
- 尽量使用seagull条码打印机驱动,会清晰一些
- 打印机图形混色设置成‘无’,会清晰一些
- 擦拭打印头(清水,酒精),比如出现一整条打印不出的竖线很可能就是打印头有脏东西了
- 增加打印浓度
- 打印PDF可使用 鸟系统桌面版客户端,支持打印原始PDF,支持静默打印
- seagull打印机驱动下载地址:
https://www.seagullscientific.com/drivers/windows-printer-drivers/
PDF转HTML地址贴调整方法
- 找到父元素class
- 在chrome浏览器中,鼠标在地址贴上 -> 右键 -> 检查
- 找父元素的class -> pdf_packing_slip, packing_slip, _packing_slip_
- 调整语句
- PDF地址贴的渲染目标为canvas标签
- 居中:
- canvas { display: block; margin: auto; }
- 缩小放大,通过控制width可以实现等比的缩放,默认width为98mm:
- canvas { width: 98mm; height: auto; }
- 调节边距:
- canvas { margin-left: 1mm; margin-right: 1mm; }
- 整体语句:
- .pdf_packing_slip canvas { width: 85mm; }
- 强制覆盖
- 对于使用ratio方式渲染的html地址贴,需要强制覆盖样式才能生效,强制覆盖样式需要加!important
- 区分ratio方式:检查元素找到class="pdfdoc",看是否配置了ratio参数,如有ratio参数则使用ratio渲染方式
- 强制覆盖语句:
- ._packing_slip_ canvas { display: block; margin: auto; width: 95mm !important; height: auto !important; }
PDF打印
- 确认已更新seagull打印机驱动
- 调整合适的纸张大小(标准数值见上面)和地址贴缩放比例(默认不需要缩放)
- pdf打印预览底部留白过多,比如在福昕客户端中,可取消勾选 自动居中 设置
- 默认方向为纵向,方向不对可尝试调整方向
其他问题汇总
- 批量打印(火狐浏览器)堆在一起了
答:火狐浏览器更新后的bug
- 生成一维码的js库
答:JsBarcode(https://github.com/lindell/JsBarcode)
- 某些颜色(特邮宝)的字打不出
答:需要开启混色功能,但是开启混色后清晰的会下降,建议提供方改
- 生成的pdf会长一截
答:可以通过调整pdf打印客户端的配置来设置上下左右的留白,这块我们平常打印的比较少,须在仔细测试后将方法加到文档里面
- 打出来的条码比页面上的小(谷歌浏览器)
答:谷歌浏览器打印程序的包容性不如火狐,这块如果缩放,调整边距不能解决,得重新调整地址贴的css布局
- 关于pdf的分辨率
答:矢量放大(chrome浏览器从html渲染成pdf),所以与分辨率无关,如果是一些logo,则取决于图片的分辨率
- dhlde 4x8地址贴打印过小
答:尝试调整的 邮递服务提供商账号 的设置,调整为scale="6",ratio="4.5",这样比例和清晰度会正常一些
- 皇家邮政4x2地址贴 最小字 chrome浏览器显示比其他浏览器大
答:需要设置chrome浏览器的最小字号(设置->外观→自定义字体→最小字号调到最小)
- seagull打印机驱动自动搜索不到,尝试使用以下安装方法
答:连接方式选其他 -> 手动选择打印机型号 -> 端口选择USB端口
- 一个pdf文件有多个地址贴,部分地址贴会出现乱码
答:火狐64.0版本更新后,调整了pdf加载机制,只会自动加载当前窗口能看到的地址贴,需要手动滚动到最后的地址贴再打印
- 火狐浏览器能支持静默打印吗?即是否能不弹打印对话框,使用默认打印机打印?
答:地址栏输入about:config,新建布尔类型配置,字段名为print.always_print_silent,设置为True
ps: 允许脚本自动关闭窗口的配置字段名为allow_scripts_to_close_windows,设置为True
- 一些第三方pdf地址贴logo是彩色,打印不出来,是否有办法解决
答:混色选无的情况下,点击颜色调整,将颜色平衡中的红绿蓝三项设置都调到-50试试
一些可以继续研究优化的问题
- 谷歌浏览器的打印效果相对没有火狐浏览器清晰,能否能找到一种通用方法提高清晰度(记得之前看到过通过css来加重打印效果的插件)
- 有的服务返回的pdf某些字段很不清晰(joom),除了让提供方修改之外,能否想上面一个问题一样,找到办法优化打印效果