在 flutter pdf 中创建图标?

问题描述 投票:0回答:4

我需要在 flutter pdf 中添加图标。这与在 flutter 中添加图标完全不同。我正在使用 https://pub.dev/packages/pdf 这个包。

这是代码:

pw.Icon(pw.IconData(0xe047));

错误是:

ArgumentError (Invalid argument (string): Contains invalid characters.: "")
flutter dart pdf icons
4个回答
2
投票

检查页面主题下是否添加了PdfGoogleFonts.materialIcons():

theme: pw.ThemeData.withFont(
  base: await PdfGoogleFonts.openSansRegular(),
  bold: await PdfGoogleFonts.openSansBold(),
  icons: await PdfGoogleFonts.materialIcons(), // this line
)

2
投票

要在 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,
                )

2
投票

使用 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文件后的输出是,

enter image description here


1
投票

你必须添加打印模块

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

© www.soinside.com 2019 - 2024. All rights reserved.