wkhtmltopdf使用中echart等渲染问题

问题1. wkhtmltopdf生成pdf过程中出现echart无法渲染问题,思路就是在服务端渲染echart图表,以base64形式展示到img标签上。asyncData是nuxt.js运行在服务端的生命周期。

```
<script>
import * as echarts from 'echarts'
import { getChartOptions1 } from '@/utils/index'
const Canvas = require('canvas')

export default {
  async asyncData ({ $axios, query }) {
    const options1 = getChartOptions1()
    // 在服务端生成canvas节点
    const canvas = new Canvas.Canvas(parseInt(986, 10), parseInt(380, 10))
    echarts.setCanvasCreator(function () {
      return canvas
    })
    // 初始化echart
    const chart = echarts.init(canvas)
    // 生成chart1
    chart.setOption(options1)
    const imgChart1 = `data:image/png;base64,${chart.getDom().toBuffer().toString('base64')}`

    return { imgChart1 }
  }
}
</script>
```

node-canvas在服务端运行,需要根据不同操作系统配置环境,可以按照[官方步骤配置](https://github.com/Automattic/node-canvas/#compiling)

[相似问题参考](https://blog.csdn.net/wengye1990/article/details/71120743)

使用node-canvas可能会遇到babel配置问题,可以参考

```
{
  "presets": ["@babel/preset-env"]
}
```

问题2. table表格分页之后出现多余的表头,解决方法

```
thead {
  display: table-row-group;
}
```

问题3. 对于不想tr分页被分割在两页时,可以设置

```
tr {
  page-break-inside: avoid !important;
}
```

问题4. 需要pdf在章节强制分页,可以在需要分页的地方插入一个div。

```
<div class="divider"></div>

.divider {
  page-break-before: always;
}
```

问题5. 对于Vue、React单页应用项目可能存在无法渲染生成pdf问题,也可能是wkhtmltopdf内核版本问题,不过试了公司好几个项目都不行,最后使用了nuxt.js来进行服务端渲染。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装wkhtmltopdf 1. 下载安装包 首先,需要到wkhtmltopdf的官网下载相应的安装包。根据自己的系统选择对应的版本,这里以CentOS 7为例。 下载地址:https://wkhtmltopdf.org/downloads.html 2. 安装依赖 安装wkhtmltopdf之前需要安装一些依赖,执行以下命令: ``` yum install -y openssl-devel.x86_64 libXrender-devel.x86_64 libXext.x86_64 fontconfig.x86_64 libX11-devel.x86_64 libjpeg-turbo-devel.x86_64 ``` 3. 安装wkhtmltopdf 将下载好的安装包解压,并将wkhtmltopdf可执行文件复制到/usr/local/bin/目录下,执行以下命令: ``` tar -zxvf wkhtmltox-0.12.6-1.centos7.x86_64.rpm.tar.gz cd wkhtmltox cp bin/wkhtmltopdf /usr/local/bin/ ``` 文支持问题 如果直接使用wkhtmltopdf转换文内容,可能会出现乱码或不支持文的情况。需要安装文字体才能解决这个问题。 1. 查找文字体 首先需要找到系统已安装的文字体。执行以下命令: ``` fc-list :lang=zh ``` 输出结果包含的文件路径即为系统已安装的文字体。 2. 安装文字体 如果系统不存在文字体,可以下载文字体并安装。 这里以“文泉驿微米黑”字体为例。执行以下命令: ``` yum install -y wget fontconfig wget https://github.com/ButterAndButterfly/WenQuanYiMicroHei/raw/master/wqy-microhei.ttc mkdir -p /usr/share/fonts/wqy-microhei cp wqy-microhei.ttc /usr/share/fonts/wqy-microhei/ fc-cache -f -v ``` 3. 设置环境变量 在wkhtmltopdf执行转换时,需要设置一个环境变量来指定字体文件路径。 执行以下命令: ``` export WKHTMLTOPDF_FONT_PATH=/usr/share/fonts/wqy-microhei/ ``` 注意,此命令只在当前会话生效。如果需要永久生效,可以将其添加到/etc/profile文件。 完成以上步骤后,就可以愉快地使用wkhtmltopdf进行转换并支持文了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值