我正在尝试使用PDF软件包在Flutter中生成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)),
),
),
);
这是它的生成方式:
虽然预期的实际结果不应以字符分隔,但这是我应该看到的示例:
答案 0 :(得分:2)
如果您的所有小部件都具有rtl父项,且所有小部件都具有pw.Directionality并设置了TextDirection.rtl,或者在单个文本小部件中使用TextDirection.rtl
答案 1 :(得分:1)
只需将 theme: ThemeData.withFont(base: ttf,)
添加到 Page 小部件,如下所示:
var data = await rootBundle.load("fonts/IRANSansWeb(FaNum)_Bold.ttf");
final ttf = Font.ttf(data);
Page(
pageFormat: PdfPageFormat.a4,
theme: ThemeData.withFont(
base: ttf,
),
orientation: PageOrientation.landscape,
build: (Context context) {
return Align(
alignment: Alignment.center,
child: new Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Column(
children: [
Row(
children: [
Text(
'خلیج فارس',
textDirection: TextDirection.rtl,
)
]
)
]
),
Column(
children: [
Image(compareChartImage),
]
),
Column(
children:[
Image(timingChartImage),
]
)
]
));
}
)
答案 2 :(得分:0)
只需将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),
),
),
注意:如果文本中包含一些数字,则可能会出现问题