Flutter创建具有不同页面大小和字体大小的pdf文件

时间:2018-10-16 10:43:44

标签: pdf flutter size

此处提供了代码,可为抖动创建pdf文件。我正在使用插件pdf 1.0.6

我的问题:

  • 如何创建宽度为75mm且具有自动高度的pdf文件以适合 内容?
  • 如何创建具有不同字体大小的多行文本?

    PDFDocument _generateDocument() {
    final pdf = new PDFDocument(deflate: zlib.encode);
    final page = new PDFPage(pdf, pageFormat: PDFPageFormat.A4);
    final g = page.getGraphics();
    final font = new PDFFont(pdf);
    final top = page.pageFormat.height;
    
    g.setColor(new PDFColor(0.0, 1.0, 1.0));
    g.drawRect(50.0 * PDFPageFormat.MM, top - 80.0 * PDFPageFormat.MM,
        100.0 * PDFPageFormat.MM, 50.0 * PDFPageFormat.MM);
    g.fillPath();
    
    g.setColor(new PDFColor(0.3, 0.3, 0.3));
    g.drawString(font, 12.0, "Hello World!", 10.0 * PDFPageFormat.MM,
        top - 10.0 * PDFPageFormat.MM);
    
    return pdf;
    

    }

1 个答案:

答案 0 :(得分:1)

我建议您更新到最新版本pdf: ^1.4.,因为在生成pdf的方式上已作了很多更改。

  • 对于格式大小,我会尝试PdfPageFormat.undefined或在您的情况下尝试PdfPageFormat(75,double.infinity)

https://github.com/DavBfr/dart_pdf/blob/78232de1f962ea04c7e950d0f737417a35863071/pdf/lib/src/page_format.dart#L49

  • 对于具有不同大小的多行,我将使用创建使用小部件的pdf的新方法。参见示例:

https://github.com/DavBfr/dart_pdf/blob/master/pdf/example/main.dart

简单

pdf.addPage(Page(
    pageFormat: PdfPageFormat.a4,
    build: (Context context) {
      return Center(
        child: Text('Hello World', style: TextStyle(fontSize: 40)),
      ); // Center
    })); // Page