这里有为 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: ^1.4.
,因为如何构建 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
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());
}