You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的pdfkit转换含Material Icons的HTML为PDF失败求助

解决Material Icons无法在pdfkit生成的PDF中渲染的问题

我之前也碰到过类似的Material Icons没法在pdfkit生成的PDF里正常显示的情况,给你几个实用的排查和解决方向:

  • 确保Material Icons字体可被pdfkit访问
    如果你是通过CDN引入的字体,pdfkit可能因为网络限制或者资源加载策略无法获取到字体文件。建议把Material Icons的字体文件(比如woff2格式)下载到本地项目中,然后在HTML的样式里用本地路径引用:

    @font-face {
      font-family: 'Material Icons';
      font-style: normal;
      font-weight: 400;
      src: url('./assets/fonts/material-icons.woff2') format('woff2');
    }
    .material-icons {
      font-family: 'Material Icons';
      font-weight: normal;
      font-style: normal;
      font-size: 24px;
      line-height: 1;
      letter-spacing: normal;
      text-transform: none;
      display: inline-block;
      white-space: nowrap;
      word-wrap: normal;
      direction: ltr;
      -webkit-font-feature-settings: 'liga';
      -webkit-font-smoothing: antialiased;
    }
    

    注意要保证字体文件的路径相对于你的HTML文件是正确的,避免路径错误导致字体加载失败。

  • 配置pdfkit的加载选项
    pdfkit底层依赖wkhtmltopdf,默认可能会限制本地文件访问或者停止慢脚本,这会影响字体加载。你可以在生成PDF时添加相关参数:
    如果是用命令行生成:

    pdfkit --enable-local-file-access --no-stop-slow-scripts templates/pdf.html out.pdf
    

    如果是通过Python脚本(比如你的gen.py)调用,要在配置里设置这些选项:

    import pdfkit
    
    config = pdfkit.configuration(wkhtmltopdf='/path/to/wkhtmltopdf') # 如果wkhtmltopdf不在系统PATH里需要指定
    options = {
        'enable-local-file-access': None,
        'no-stop-slow-scripts': None,
        'allow': '/path/to/your/project' # 允许访问项目目录下的资源
    }
    pdfkit.from_file('templates/pdf.html', 'out.pdf', configuration=config, options=options)
    
  • 先验证HTML在浏览器中的渲染
    先把templates/pdf.html在普通浏览器里打开,确认Material Icons能正常显示。如果浏览器里都显示不出来,那问题肯定出在HTML本身——比如字体引用错误、类名拼写错误(比如把material-icons写成了别的),先把浏览器里的问题解决,再尝试生成PDF。

  • 更新wkhtmltopdf到最新版本
    旧版本的wkhtmltopdf对现代字体格式(比如woff2)的支持很差,建议你检查一下当前版本:

    wkhtmltopdf --version
    

    如果版本比较旧,就去下载最新的稳定版,更新后再尝试生成PDF。

内容的提问来源于stack exchange,提问作者Quy Tang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:50:59