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

Flutter Web中PDF包无法正常渲染泰米尔语等非英文字符求助

解决Flutter Web中PDF包渲染泰米尔语等非英文字符异常的问题

针对你使用pdf: ^3.8.1和printing: ^5.9.1时泰米尔语无法正常渲染的问题,可通过以下步骤修复:

关键问题分析

  1. 你已加载支持泰米尔语的字体,但未将主题配置正确应用到Document实例
  2. 泰米尔语属于复杂文字脚本,需要启用字形整形(shaping)才能正确渲染连写字符

修复步骤及代码示例

1. 确保字体文件有效

确认HindMadurai-Regular.ttf文件完整且确实支持泰米尔语,可通过系统字体预览工具验证字符显示。

2. 正确配置PDF主题并启用字形整形

修改代码,将自定义字体主题应用到Document,并在文本样式中开启useShaping:

Future<Uint8List> createSecondPdf(
    List<AttendeeListViewModel> attendeeListViewModelList) async {
  // 预加载字体,避免重复加载
  final fontData = await rootBundle.load("assets/HindMadurai-Regular.ttf");
  final tamilFont = Font.ttf(fontData);

  // 创建包含泰米尔语字体的主题
  final pdfTheme = ThemeData.withFont(
    base: tamilFont,
    bold: tamilFont,
    italic: tamilFont,
    boldItalic: tamilFont,
  );

  // 将主题应用到Document
  final pdf = Document(theme: pdfTheme);

  pdf.addPage(
    MultiPage(
      build: ((context) {
        return [
          Table.fromTextArray(
            headers: ['Sl.No', 'Name', 'Data'],
            cellAlignments: {0: Alignment.center},
            // 明确设置字体并启用字形整形
            cellStyle: TextStyle(
              font: tamilFont,
              useShaping: true, // 关键:启用复杂脚本字形整形
            ),
            columnWidths: {
              0: const FlexColumnWidth(0.6),
              1: const FlexColumnWidth(4.0),
              2: const FlexColumnWidth(2.0),
            },
            data: <List<String>>[
              <String>[
                'Hello',
                attendeeListViewModelList[2]
                        .attendeeDataModel
                        ?.pNameAndProfession ??
                    '',
                'ஜெயப்பாண்டி'
              ]
            ],
          ),
        ];
      }),
    ),
  );

  return pdf.save();
}

3. 额外检查项

  • 确认pubspec.yaml中已正确声明字体资源:
    flutter:
      assets:
        - assets/HindMadurai-Regular.ttf
    
  • 若仍有问题,尝试更换其他泰米尔语字体(如Noto Sans Tamil)测试,排除字体本身的兼容性问题
  • 确保Flutter Web的资源加载路径正确,可通过rootBundle.load的返回值验证字体是否成功加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:18:33