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

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

这里有为 flutter 创建 pdf 文件的代码。我正在使用插件 pdf 1.0.6.

我的问题:

  • 如何创建宽度为 75 毫米且自动高度适合的 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;
    }
    
pdf flutter size
2个回答
2
投票

我建议您更新到最新版本

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

0
投票
import 'package:path_provider/path_provider.dart';
void createAndSavePdf(){
final tempDir = await getTemporaryDirectory();
 final pdf = pw.Document();
//you can user layout builder to find height
// or use ImageInfo to find Image Height  
final customPageSize = PdfPageFormat(75, height, marginAll: 0);
  pdf.addPage(pw.Page(
          pageFormat: customPageSize,
          build: (pw.Context context) {
            return pw.Center(
              child: pw.Image(image, fit: pw.BoxFit.fitHeight),
            ); // Center
          }));
      final pdfFile = await pdfDoc.writeAsBytes(await pdf.save());
}
© www.soinside.com 2019 - 2024. All rights reserved.