jsPDF 添加 中文字体 分页打印 移除空白页
jsPDF2.5版本 默认不支持utf-8的字体 具体看官方的说明,默认是不支持中文的。要使用中文需要自己添加字体。
1 将字体转换为base64编码 然后引入。也可以直接引入二进制文件,但没试过这个。
建议直接使用jsPFD源码里的 /fontconverter/fontconverter.html
直接选择文件 点create
会生成一个导入字体的 js脚本 如果不是用的 module 方式引入js的 需要稍作修改。
注意事项
1字体文件不要太庞大 例如15M以上。太大会导致内存溢出错误。
2选的字体一定要包含你要用的字 否则就会显示空白 或者乱码。
比如 你页面上 有个字:中,在你的字体文件里面没有这个字形,那就会导致 出现中的地方都是空白或乱码。
3并不是所有的字体都能正常工作,这里我使用了方正黑体 和 NotoSansCJKtc-Regular
2 页面上引入这个字体,并将该字体设置为默认字体
如果你是用jsPDF.html()方法生成pdf的 这一步很重要
3 在要使用字体之前 设置字体
点击查看代码
var pdf = new jsPDF('l', 'pt');
pdf.setFont("fzht"); // set font
pdf.text(10, 10, '欢迎访问 hangge.com');
具体代码如下:
Html2Pdf
你好nihao
- 一
- 二
- 三
- 四
Tables
项目
花费
说明
Available
牛奶
$1.00
Hello PDF World你好PDF
Out Of Stock
Milk
$1.00
Hello PDF World
Out Of Stock
自动分页打印
@{
//每页的内容条数固定
//这样能算出来指定的内容需要打印几页
//打印完毕后 移除多余的页面 就可以保证没有空白页
var startIndex = 0;
var page= 0;
while (startIndex < Model.ApplyItem.Count)
{
var items = Model.ApplyItem.Skip(startIndex).Take(6);
startIndex += 6;
page++;
@foreach (var item in items)
{
@item.StoreHouseName
@item.Memo
}
}
}
@section js{
}