我需要在 flutter pdf 中添加图标。这与在 flutter 中添加图标完全不同。我正在使用 https://pub.dev/packages/pdf 这个包。
这是代码:
pw.Icon(pw.IconData(0xe047));
错误是:
ArgumentError (Invalid argument (string): Contains invalid characters.: "")
检查页面主题下是否添加了PdfGoogleFonts.materialIcons():
theme: pw.ThemeData.withFont(
base: await PdfGoogleFonts.openSansRegular(),
bold: await PdfGoogleFonts.openSansBold(),
icons: await PdfGoogleFonts.materialIcons(), // this line
)
要在 Pdf 包中使用材质图标,只需将 material 导入为 mt 并将 pdf 导入为 dynamic
import 'package:flutter/material.dart' as mt;
import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart';
现在从材质库中获取图标并将其代码点传递给 PDF 库中的 IconData 构造函数,现在您可以轻松地在 PDF Icon() 类中使用 IconData 实例。
Icon(IconData(mt.Icons.check.codePoint),
color:
value PdfColors.grey,
size: 18,
)
使用 www.fluttericon.com 设置自定义图标并 下载您的图标字体。
或
您可以直接使用 PdfGoogleFontsmaterialIcons 而不是使用 ttf
像这样使用 pw.ThemeData.withFont
var pathToFile = await rootBundle.load('- your icon font file (.ttf) -');
final ttf = pw.Font.ttf(pathToFile);
// load ttf to pdf theme
final theme = pw.ThemeData.withFont(
base: await PdfGoogleFonts.robotoCondensedRegular(),
bold: await PdfGoogleFonts.robotoCondensedBold(),
icons: ttf,
);
final pw.Icon(pw.IconData(customIcon.icon.codePoint), size: 10)
渲染pdf文件后的输出是,
你必须添加打印模块
https://pub.dev/packages/printing
dependencies:
printing: ^5.6.0
将包导入到 dart 文件中
import 'package:printing/printing.dart';
并设置你的主题:
final pdf = pw.Document();
pdf.addPage(
pw.Page(
theme: pw.ThemeData.withFont(
base: await PdfGoogleFonts.varelaRoundRegular(),
bold: await PdfGoogleFonts.varelaRoundRegular(),
icons: await PdfGoogleFonts.materialIcons(),
),
pageFormat: PdfPageFormat.a4,
build: (pw.Context context) {
return pw.Center(
child: pw.Text("Hello World"),
);
},
),
);
这个答案的来源在这里
https://github.com/DavBfr/dart_pdf/blob/master/demo/lib/examples/resume.dart