如何在flutter pdf生成中添加阿拉伯字符

Ahm*_*gdi 7 pdf android dart flutter

我正在尝试使用包PDF生成颤振中的pdf,这是我的代码:

  final doc = pw.Document();
  var data = await rootBundle.load("assets/fonts/arial.ttf");
  var myFont = Font.ttf(data);
  String test = '???????? ??? ?? ?????????';
  var data2 = utf8.encode(test);
  doc.addPage(
    pw.Page(
      build: (pw.Context context) => pw.Center(
        child: pw.Text(test, style: pw.TextStyle(fontSize: 80,font: myFont)),
      ),
    ),
  );

Run Code Online (Sandbox Code Playgroud)

这是它的生成方式:

在此处输入图片说明

虽然预期的实际结果不应以字符分隔,但以下是我应该看到的示例:

在此处输入图片说明

far*_*ama 6

只需添加textDirection: pw.TextDirection.rtl文本小部件,如下所示:

 pw.Page(
      build: (pw.Context context) => pw.Center(
        child: pw.Text(test, style: pw.TextStyle(fontSize: 80,font: myFont),textDirection: 
        pw.TextDirection.rtl),
      ),
    ),
Run Code Online (Sandbox Code Playgroud)

注意:如果文本中包含一些数字,可能会出现问题


小智 5

只需添加theme: ThemeData.withFont(base: ttf,)页面小部件,如下所示:

\n
  var data = await rootBundle.load("fonts/IRANSansWeb(FaNum)_Bold.ttf");\n  final ttf = Font.ttf(data);\n\n Page(\n      pageFormat: PdfPageFormat.a4,\n      theme: ThemeData.withFont(\n        base: ttf,\n      ),\n      orientation: PageOrientation.landscape,\n      build: (Context context) {\nreturn Align(\n  alignment: Alignment.center,\n  child: new Column(\n      mainAxisAlignment: MainAxisAlignment.spaceBetween,\n      crossAxisAlignment: CrossAxisAlignment.center,\n      children: [\n        Column(\n          children: [\n            Row(\n              children: [\n                Text(\n                  '\xd8\xae\xd9\x84\xdb\x8c\xd8\xac \xd9\x81\xd8\xa7\xd8\xb1\xd8\xb3',\n                 textDirection: TextDirection.rtl,\n                )\n              ]\n            )\n          ]\n        ),\n        Column(\n          children: [\n            Image(compareChartImage),\n          ]\n        ),\n        Column(\n          children:[\n            Image(timingChartImage),\n          ]\n        )\n      ]\n  ));\n }\n)\n
Run Code Online (Sandbox Code Playgroud)\n


Moh*_*ari 3

如果您的所有小部件都有 rtl 父级,则所有小部件都带有 pw.Directionality 并设置 TextDirection.rtl ,或者在单个文本小部件中使用 TextDirection.rtl