我正在尝试根据条件从源生成PDF文件。我正在处理的数据是用土耳其语写的。这就是为什么,存在字体错误。我需要使用一种支持土耳其字符的字体,但我无法在Dart命令行应用程序中使用它。
这就是为什么我想知道有没有一种方法可以将字体文件导入Dart应用程序?或者有其他方法可以解决unicode编码器转换错误吗?
我正在使用pdf库生成pdf文件。
#0 _UnicodeSubsetEncoder.convert (dart:convert/ascii.dart:89:9)
#1 Latin1Codec.encode (dart:convert/latin1.dart:40:46)
#2 PdfFont.stringMetrics
package:pdf/…/pdf/font.dart:174
#3 RichText.layout.<anonymous closure>
package:pdf/…/widgets/text.dart:607
#4 TextSpan.visitChildren
package:pdf/…/widgets/text.dart:436
#5 RichText.layout
package:pdf/…/widgets/text.dart:583
#6 Align.layout
package:pdf/…/widgets/basic.dart:313
#7 Flex.layout
package:pdf/…/widgets/flex.dart:294
#8 Page.layout
package:pdf/…/widgets/page.dart:200
#9 Page.postProcess
package:pdf/…/widgets/page.dart:142
#10 Document.save
package:pdf/…/widgets/document.dart:118
#11 gethtml
bin/vvitru.dart:93
<asynchronous suspension>
#12 main
bin/vvitru.dart:14
#13 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#14 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
我发现不需要在pubspec.yaml中导入字体。只需粘贴字体文件的目录就可以使用它。
比如:
final fontData =
File('/Users/zahidtekbas/Downloads/Open_Sans/OpenSans-Regular.ttf')
.readAsBytesSync();
final ttf = pw.Font.ttf(fontData.buffer.asByteData());