V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
jatsz2020
V2EX  ›  JavaScript

js 生成中文 PDF 有啥好办法?

  •  
  •   jatsz2020 · 2021-10-24 12:06:49 +08:00 · 4085 次点击
    这是一个创建于 1161 天前的主题,其中的信息可能已经有所发展或是发生改变。
    html2pdf 支持中文,html 排版,但是生成的 PDF 是图片的,无法复制里面的文字

    jspdf 搞了好久无法支持中文,然后前端加载一个几十兆的字体也麻烦
    15 条回复    2021-10-26 11:00:33 +08:00
    codehz
        1
    codehz  
       2021-10-24 12:16:12 +08:00 via Android
    要支持矢量化中文就必须得自己提供字体。。。浏览器的 api 只能糊成像素的(
    binux
        2
    binux  
       2021-10-24 12:19:56 +08:00 via Android
    @codehz 理论上讲完全可以,文字是图片的,但是可以复制。
    MonikaCeng
        3
    MonikaCeng  
       2021-10-24 13:16:25 +08:00 via Android
    我之前用 windows 服务器,用了一个.exe 文件,php 命令行调用它去将网页转 pdf ,中文,文本可复制,链接可点击。linux 应该这种插件更多
    beyondstars
        4
    beyondstars  
       2021-10-24 13:58:33 +08:00
    建议让后端用 TeX (LaTeX, XeLaTeX) 实现文本到 PDF 的渲染,然后后端通过 API 的形式把功能开放给前端,这样前端可以通过 JS 发起异步请求调接口实现这个功能,生成的 PDF 质量也有保证。
    jaywhen
        5
    jaywhen  
       2021-10-24 14:41:43 +08:00   ❤️ 1
    Typora 用的 [pdf-lib]( https://github.com/Hopding/pdf-lib/ ),但是默认不支持渲染中文,如一楼所说得自己提供字体,嫌中文字体文件大可以用 [gulp-fontmin]( https://github.com/ecomfe/gulp-fontmin) 对字体文件压缩一下
    jaywhen
        6
    jaywhen  
       2021-10-24 14:45:51 +08:00
    @jaywhen 链接格式有点乱抱歉
    muzuiget
        7
    muzuiget  
       2021-10-24 17:00:10 +08:00   ❤️ 2
    PDF 太复杂了,还不如弄个打印布局页面,让用户通过打印功能生成。
    codehz
        8
    codehz  
       2021-10-24 21:08:30 +08:00 via Android
    @muzuiget (这么说直接用 window.print()方法就可以了,大道至简
    zeni123
        9
    zeni123  
       2021-10-24 21:20:10 +08:00
    后端使用 headless chrome 打印, 多复杂的都能打印出来
    qiaobeier
        10
    qiaobeier  
       2021-10-24 21:28:35 +08:00
    前端嵌入字体文件涉及安全问题(浏览器沙盒),还是用后端吧,一大堆解决方案。
    ccraohng
        11
    ccraohng  
       2021-10-25 07:58:51 +08:00
    后端吧,node 用 puppeteer, wkhtmltopdf 也可以
    deadofpeople
        12
    deadofpeople  
       2021-10-25 10:38:24 +08:00
    wkhtmltopdf
    nicknick
        13
    nicknick  
       2021-10-25 10:49:31 +08:00 via Android
    别别,你让后端做吧。某日客户拿个 ie9 跟你呛下载不了你就知道了。
    supuwoerc
        14
    supuwoerc  
       2021-10-25 14:19:29 +08:00
    jspdf 有个韩国人做过支持多语言的二次开发,很久之前我记得有小伙伴用过,可以在 github 上找一找。
    Kasumi20
        15
    Kasumi20  
       2021-10-26 11:00:33 +08:00
    强烈推荐 React-PDF ,不过中文需要自定义字体
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1654 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 16:47 · PVG 00:47 · LAX 08:47 · JFK 11:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.