前端pdf插件JSPDF.JS的简单使用及引入中文字库

JSPDF.JS引入中文字库

    • 引入jspdf.js
    • 写个简单的例子
    • 添加中文字库(ttf转js)
    • 直接引入ttf文件(未完成)

引入jspdf.js

github地址:https://github.com/MrRio/jsPDF

前端pdf插件JSPDF.JS的简单使用及引入中文字库_第1张图片
引入在线的库




或直接引入:jsPDF/src/jspdf.js

写个简单的例子

// 创建jspdf对象,默认竖屏,a4纸大小
var doc = new jsPDF();
// 打印所有可用的字体
console.log(doc.getFontList());
// 设置字体(内置的几种字体都是不支持中文,中文字体需要自己添加)
doc.setFont("FZYTK");
// 设置字体大小
doc.setFontSize(20);
// 添加文字内容,左边距离和上边距离
doc.text(path, 55, 180);
// 添加图片(图片转成DataURL形式:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQA...)
//左上距离,图片长宽
doc.addImage(images, 'PNG', 55, 55, 100, 100);
// 保存pdf
doc.save(name + '.pdf');

添加中文字库(ttf转js)

需要准备ttf字体文件
TTF字体下载:http://www.font5.com.cn/font_search.php
也可以直接去windows的C盘:C:\Windows\Fonts 中找,不过这里的文件都偏大

然后到**jsPDF/fontconverter/**找jspdf提供的ttf转js工具

打开工具之后如下图所示
前端pdf插件JSPDF.JS的简单使用及引入中文字库_第2张图片
直接选择文件会自动命名,点击create会生成js文件
前端pdf插件JSPDF.JS的简单使用及引入中文字库_第3张图片
如上面的例子

doc.setFont("FZYTK");

就可以找到相应的字体并使用了
注意:要放到方法:doc.text 上面否则上面的doc.text设置的字体不生效

直接引入ttf文件(未完成)

官方的demo是

		var doc = new jsPDF({filters: ['ASCIIHexEncode'], putOnlyUsedFonts: true});
        var PTSans;
        if (typeof global === 'object' && global.isNode === true) {
            PTSans = doc.loadFile('/../reference/PTSans.ttf');
        } else {
            PTSans = doc.loadFile('base/spec/reference/PTSans.ttf');
        }
        doc.addFileToVFS("PTSans.ttf", PTSans);
        doc.addFont('PTSans.ttf', 'PTSans', 'normal');
        
        doc.setFont('PTSans'); // set font
        doc.setFontSize(10);
        doc.text("А ну чики брики и в дамки!", 10, 10);
        comparePdf(doc.output(), 'russian-1line.pdf', 'unicode')

这个是我最初使用的方法,遗憾的是我并没有调试通过
直接报错了:jsPDF PubSub Error No unicode cmap for font Error: No unicode cmap for font
最终也没找到出问题原因,希望路过大神可以指导一下

熬夜是加快脱发的最好方法!
(来着一个做java开发的小渣渣)

你可能感兴趣的:(前端)