生成pdf文件,有两种实现的方法,一种是直接使用text生成pdf,不需要获取元素,一种是获取html元素,通过元素生成;通过对这两种方法的使用,我最终选择了使用text生成。在此过程中使用到了padMake这个js库(https://www.npmjs.com/package/pdfmakehttps://www.npmjs.com/package/pdfmake)。具体安装估计大家都能看懂,主要是咱们中国人使用的时候要生成中文的pdf,然而这个库里边集成的字体是英文常见的Roboto字体,这就导致生成pdf文件是乱码的。接下来就主要围绕解决乱码问题进行流程梳理。

首先,我们既然要生成中文,那就得有一个中文字体(比如我项目里的‘微软雅黑.ttf’),网络上搜下载好自己要生成的pdf字体。

其次,把下载好的字体,打包成js库能够使用的js文件。这一步要使用到pdfmake-master的源代码(https://github.com/bpampuch/pdfmake),下载好这个工程执行以下操作:

  1. 进入工程的根目录,安装gulp,使用命令为 npm install gulp --save-dev
  2. 安装pdfmake的依赖包,指令 npm install
  3. 把下载好的字体文件放在工程里的 examples/fonts 路径下,因为中文字体包比较大,不建议打包多个字体包,然后执行指令 gulp buildFonts
  4. 第三部走完之后,在build 文件中找到vfs_fonts.js文件,然后用这个文件替换你的项目里引入的pdfmake依赖包下的同名文件。
  5. 替换好了之后就是一些官网上也能够看到的操作,下边是我项目的测试代码:
注意引入写法:
import pdfMake from "pdfmake/build/pdfmake" ;
import pdfFonts from "pdfmake/build/vfs_fonts" ;
     pdfMake.vfs = pdfFonts.pdfMake.vfs;
    
   this.setState({
        temp:ClassicWay.get_pdfmake_options(this.state.text)
    },()=>{    let text = {         content:this.state.temp,         defaultStyle: {          font: '微软雅黑'
            }   };
    pdfMake.fonts = {
        微软雅黑: {
            normal: '微软雅黑.ttf',
            bold: '微软雅黑.ttf',
            italics: '微软雅黑.ttf',
            bolditalics: '微软雅黑.ttf',
        }
    };
   //生成的pdf会下载到本地
    pdfMake.createPdf(text).download();
    })
   text.content的数据类型是个数组,具体怎么布置类型,官网上会有。
我是测试完几个之后,选择这个的,如果谁有更好的生成方法,还请赐教啊。要是哪个同志按照流程也没有跑通这个,可以留言,咱们互相学习。

用pdfmake生成pdf中文文档相关推荐

  1. java 读取pdf乱码_java itextpdf 5.5.6读取pdf中文文档乱码怎么解决

    Itext中文处理: 在Itext中的中文处理随着Itext的版本变化,采取的方法也在变化. 首先我来演示一下利用Itext-2.1.3.jar与iTextAsian.jar两个包来解决中文问题. 附 ...

  2. springboot 中文文档_比Swagger还好用的自动生成接口文档工具

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  3. python3.8图片_python3.8.3官方中文文档[PDF][CHM][31.14MB]

    内容简介 Python 3.8.3 文档是一套整理的Python 3.8.3 的官方中文文档,包含chm和官方pdf完整版,需要的朋友可下载试试! Python 是一种易于学习又功能强大的编程语言.它 ...

  4. springboot 中文文档_还在用 Swagger生成接口文档?我推荐你试试它

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  5. 使用JavaScript生成二维码教程-附qrcodejs中文文档

    使用javascript生成二维码 依赖jquery 需要使用到的库 https://github.com/davidshimj... DIV <div id="qrcode" ...

  6. beego 例子_Beego中文文档PDF

    [实例简介] Beego中文文档PDF版,便于平板上阅读查看....... 快速入门」 快速入门 安装 brego包含一些示例应用程序以帮您学习并使用 brego应用框架 您需要安装Go1.1+以确保 ...

  7. oracle中文文档_如果你还在用Swagger(丝袜哥)生成接口文档,那就真有点老“土”了!...

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  8. 用Sandcastle生成CHM1.x中文文档

    前一篇文章<用Sandcastle生成CHM1.x中文文档>发布了之后,有些朋友希望获得我翻译的中文模版. 现共享如下: /Files/didasoft/Docs.zip 先说明一下,这些 ...

  9. 【Scikit-Learn 中文文档】支持向量机 - 监督学习 - 用户指南 | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/0.19.0/modules/svm.html 英文文档: http://sklearn.apachecn.org/en/0. ...

最新文章

  1. 区块链拓展-信任颠覆
  2. 高响应比优先算法代码_以梦为码丨让每一行代码都充满温情
  3. python文件不存在时创建文件_python-创建一个文件(如果不存在)
  4. 2019_BUAAOO_第一单元总结
  5. 2022速卖通328大促活动招商规则出炉啦,热销高潜产品抢先看
  6. java游戏开发基础Swing之JRadioButton
  7. (转)Oracle中实现行列转换的方法
  8. 实现线程安全的单例模式的四种方式
  9. Linux的进程优先级NI和PR
  10. Android Studio3.5 JNIDemo实现步骤详解
  11. MSN的头像存放路径
  12. [转] 宝宝出生第一年妈妈最应关心的问题
  13. 一台电脑登陆两个微信账号
  14. golang中的包管理工具——govendor和godep简单学习
  15. JGit操作之2.0版
  16. 邂逅Flutter开发
  17. Zotero简易使用教程
  18. VScode快捷键(win + mac)
  19. csv加header python_用python处理csv格式文件
  20. Web of Science爬虫实战(Post方法)

热门文章

  1. Python批量转换doc为docx格式
  2. 【2013Esri中国用户大会】GeoEvent打造实时GIS应用
  3. Centos7限速和测速
  4. 计算机无法保存,无法保存打印机设置0x000006d9?教您怎么办
  5. Windows10 中 Apple 云盘 iCloud Drive 默认在 C 盘下的存储目录迁移到其他盘符的指定目录
  6. H5判断手机是否安装某个APP
  7. 剑走偏锋做自媒体,利用自己的兴趣爱好打造赚钱IP
  8. 爬虫(1)——爬虫前奏
  9. GEE学习笔记 九十二:Sentinel-2 最新去云方法总结
  10. 计算机毕业设计SSM动物保护资讯推荐网站【附源码数据库】