V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tlerbao
V2EX  ›  程序员

别笑菜:固定格式的针式票据或文件打印具体是怎么实现的?

  •  
  •   tlerbao · 2023-11-20 16:00:55 +08:00 · 1300 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请问:

    那种三联四联一组的打印纸,提前印刷出固定格式范本,留有空位,塞到针式打印机后,相应字段打印到相应位置,是怎么实现的?

    假设现在有 Vue+PHP 开发的系统,从系统读出数据后,放入固定格式的打印纸,是怎么把相应字段数据打印到相应位置的?

    8 条回复    2023-11-20 17:45:38 +08:00
    mightybruce
        1
    mightybruce  
       2023-11-20 16:08:26 +08:00
    你的这个做法很难行得通的,因为这种 typesetting 问题研究了几十年,中间还出来 latex 这种语言。

    你倒不如反过来把打印纸通过 ocr 识别扫描变为 pdf 或 word, 此时就没那么多 typesetting 兼容性考虑(比如换行、词语换行等各类问题)
    pi1ot
        2
    pi1ot  
       2023-11-20 16:12:55 +08:00
    差不多 20 多年前我还在学校读书写 delphi 赚外快时也遇到过这个针式打印机排版的问题,没想到到现在也还是老办法。
    kd9yYw2RyhQwAwzn
        3
    kd9yYw2RyhQwAwzn  
       2023-11-20 16:18:39 +08:00
    用那种报表 画出来表格跟打印样式 填充字段 链接那种针式打印机打印
    encro
        4
    encro  
       2023-11-20 16:26:32 +08:00
    这个是设备实现的。
    设备走固定格式的纸,每次设置好刚好那么大尺寸。
    你只需要将内容打到纸上就行了。


    比如纸张是 A4 ,你需要:

    1 ,php 生成一个 a4 的 pdf 或者 image 等;
    2 ,然后调用 windows 打印 api 将 pdf 发送到可打印设备即可。

    我们就是 PHP 后端,然后后端自动打印是 C++写的。

    后台自动打印:你这简单打印可以直接调系统命令,或者第三方工具。
    前台用户打印:直接调 js 的 window.print()方法,或其他第三方库,如: https://github.com/crabbly/print.js ,这个不需要生成 PDF ,网页也能打印。
    967182
        5
    967182  
       2023-11-20 16:40:37 +08:00
    搜索关键字: 套打
    sss15
        6
    sss15  
       2023-11-20 16:44:52 +08:00
    lodop 不就可以实现吗
    样例 4:套打 https://www.lodop.net/demolist/PrintSample4.html
    lff0305
        7
    lff0305  
       2023-11-20 17:00:06 +08:00
    先生成一个 PDF 当模板,保证这个 PDF 能打印到这个票据的合适的位置

    真正打印的时候用相应的库来编辑 PDF 模板,写入数据,然后打印
    Yjhenan
        8
    Yjhenan  
       2023-11-20 17:45:38 +08:00
    就是套打,尺寸对上就可以,调试的时候带张背景图调
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:00 · PVG 03:00 · LAX 11:00 · JFK 14:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.