当前位置: 首页 > news >正文

淘宝客做二级域名网站新闻头条今日新闻

淘宝客做二级域名网站,新闻头条今日新闻,自己如何制作网站,中小学网站建设论文JS DataTable中导出PDF中文乱码 文章目录 JS DataTable中导出PDF中文乱码一. 问题二. 原因三. vfs_fonts.js四. pdfmake.js五. 解决六.参考资料 一. 问题 二. 原因 DataTable使用pdfmake,pdfmake默认字体为Roboto,不支持中文字体。添加自己的字体&#…

JS DataTable中导出PDF中文乱码

文章目录

    • JS DataTable中导出PDF中文乱码
          • 一. 问题
          • 二. 原因
          • 三. vfs_fonts.js
          • 四. pdfmake.js
          • 五. 解决
          • 六.参考资料

一. 问题

在这里插入图片描述

二. 原因

DataTable使用pdfmake,pdfmake默认字体为Roboto,不支持中文字体。添加自己的字体,需要引入对应的vfs_fonts.js文件,修改pdfmake.js。
(在我的项目中,对应datatable文件夹下的vfs_fonts.js和pdfmake.min.js,也有人是改三个文件,vfs_fonts.js,pdfmake.js和dataTable.buttons.min.js,思路对了就没问题)
主要思路依据:官网上对于添加字体的方法指导
前端页面的js内dataTable不需要改,PDF导出按钮由前端界面的JS文件中DataTable设置。
在这里插入图片描述

三. vfs_fonts.js

获取中文版的vfs_fonts.js主要有两种方法:自己生成和寻找资源。

  1. 自己生成vfs_fonts.js文件
    首先需要准备字体的ttf文件。官网上对于如何生成有以下三种方法:
    (1)安装pdfmake
    在这里插入图片描述
    (2)通过shell脚本
    官网对于使用shell脚本生成vfs_fonts.js文件的方法指导
    (3)通过php脚本
    我使用的是这种方法,所以前面两种没有详细介绍。
    官网对于使用php脚本生成vfs_fonts.js文件的方法指导
    将字体ttf文件和该php文件放置同一目录下,生成的vfs_fonts.js文件也会在该目录中。
<?php$output = "this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {";$phpDir=dir('.');while (($file=$phpDir->read())!==false) {if ($file!='..' && $file!='.' && $file!='makefont.php' && $file!='vfs_fonts.js') {$output .= '"';$output .= $file;$output .= '":"';$output .= base64_encode(file_get_contents($file));$output .= '",';}}$output=substr($output,0,-1);$output .= "};";if (isset($_REQUEST['tofile'])) {$fh = fopen('vfs_fonts.js', 'w') or die("CAN'T OPEN FILE FOR WRITING");fwrite($fh,$output);fclose($fh);echo 'vjs_fonts.js created';} else {echo $output;}

如果在目录下未生成vfs_fonts.js文件,在浏览器中显示文件内容,可以去掉if (isset($_REQUEST['tofile'])) {}这个判断条件。
生成的vfs_fonts.js文件如图所示:
在这里插入图片描述
需要将前面的"run.php"内容删除,得到:
在这里插入图片描述
对比原来Roboto字体的vfs_fonts.js文件,发现要设置normal、bold、italics、bolditalics样式,也是在同一个vfs_fonts.js文件中:
this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {
"xxx-Italic.ttf":"xxxxxxxxxxxxxxxx",
"xxx-Medium.ttf":"xxxxxxxxxxxxxxxx",
"xxx-MediumItalic.ttf":"xxxxxxxxxxxxxxxx",
"xxx-Regular.ttf":"xxxxxxxxxxxxxxxx"
}

使用该方法我导出的pdf能显示部分中文字体,也只能显示部分英文字体,不知道是生成方式有问题还是我字体ttf文件有问题。于是去找现成的资源了。

  1. 在网上寻找vfs_fonts.js资源
    资源下载地址
四. pdfmake.js

(以下内容找不到可以去dataTable.buttons.min.js找,找的时候找相似格式,主要讲个思路)

  1. 设置字体
    搜索Roboto,找到它设置字体样式部分,在后面添加自己的字体Chinese(这里四个样式用同一份字体文件):
pdfMake.fonts = {Roboto: {normal: 'Roboto-Regular.ttf',bold: 'Roboto-Medium.ttf',italics: 'Roboto-Italic.ttf',bolditalics: 'Roboto-MediumItalic.ttf'},Chinese: {normal: 'Chinese.ttf',bold: 'Chinese.ttf',italics: 'Chinese.ttf',bolditalics: 'Chinese.ttf'}
};
  1. 检查createPdf()函数
    在这里插入图片描述
    确保形式是pdfMake.createPdf(docDefinition, tableLayouts, fonts, vfs)
  2. 修改defaultStyle
    在这里插入图片描述
    找如下格式:
    在这里插入图片描述
    此外,将pdfmake.js里除了pdfmake.fonts = {}外所有的“Roboto”改成自己的字体“Chinese”。
五. 解决

在这里插入图片描述

六.参考资料

一些有用的参考资料:
导出PDF按钮在前端界面设置,而非Datatable中设置的
官网中关于非英文字符导出PDF乱码的讨论
datatable 导出无乱码中文pdf文件
pdfmake实现中文支持,解决中文乱码问题

http://www.yidumall.com/news/24612.html

相关文章:

  • 英雄联盟网站模板企业网络营销方案设计
  • 做购物网站是怎么连接银行创建网站需要什么条件
  • 网站pc和手机端分离怎么做新华传媒b2b商务平台
  • 手机版自网站百度快速排名软件下载
  • 网站建设的一般过程友情下载网站
  • jsp动态网站开发案例教程下载软文发布平台
  • 柳州市网站制作公司高级搜索入口
  • 广西壮族自治区在线seo关键词排名优化我赢网seo优化网站
  • 做网站维护承包合同加强服务保障满足群众急需i
  • 建设部网站焊工证件查询seo专员是指什么意思
  • 体检营销型网站北京seo排名公司
  • 深圳做网站公司有哪些上海最近三天的新闻
  • 对网站建设这门课程的想法最近新闻头条最新消息
  • 对于新公司如何让其做网站推广企业网站制作费用
  • 杭州软件开发公司排名网站排名优化制作
  • 网站页面太多是否做静态成都进入搜索热度前五
  • 黄岩网站开发网站怎么被百度收录
  • 建网站费用记账交换友情链接的注意事项
  • 锦州做网站的公司百度网盘会员
  • 免费做qq互赞网站优化大师在哪里
  • 网站建设要在哪学seo系统源码出售
  • 888浏览器手机下载seo优化关键词放多少合适
  • 网站获取客户信息需要备案吗体验营销案例分析
  • 武汉科技职业学院图片什么叫seo优化
  • 网站主域名哈尔滨seo关键词优化
  • 企业建设网站的方式网络推广平台有哪些
  • 政府网站建设及其对策参考文献网络软文是什么意思
  • 群晖nas怎样做网站seo自学网app
  • 网站开发的相关技能有哪些网络查询网站
  • 做家政公司网站如何制作公司网页