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

使用pdf包在Flutter生成PDF时添加图标报错如何解决?

报错原因

pdf包默认没有内置任何图标字体库,你直接传入IconData的编码值时,包找不到对应字体来渲染该Unicode字符,就会触发字符无效的异常。

解决步骤
  • 第一步:准备你要使用的图标对应的字体文件(比如Material Icons的ttf格式字体包),放到项目的assets目录下,同时在pubspec.yaml中完成资源注册声明。
  • 第二步:在初始化PDF文档的逻辑中,先加载字体文件为pdf包可识别的字体对象:
import 'package:flutter/services.dart';
import 'package:pdf/widgets.dart' as pw;

// 加载图标字体
final fontBytes = await rootBundle.load("assets/MaterialIcons.ttf");
final iconFont = pw.Font.ttf(fontBytes);
  • 第三步:调用pw.Icon时,指定加载好的字体,同时匹配IconData的字体家族配置:
pw.Icon(
  pw.IconData(
    0xe047,
    fontFamily: 'MaterialIcons',
  ),
  font: iconFont,
  size: 20, // 可根据需求调整图标大小
)
注意事项
  • 图标编码值必须和你加载的字体文件匹配,混用不同字体的编码会继续出现渲染异常或报错。
  • 如果使用自定义图标库,只需要替换上面的字体文件为你自己的ttf/otf格式字体即可,逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 13:24:02