木辛老师来了,本节课咱们一起来看看如何在Flutter中图片转PDF功能吧!

请点击右上角“关注”按钮关注我们哟:跟着木辛老师学习Flutter基础编程知识,变身快乐的编程达人吧~


PDF大家都用过吧(用过的都说好,谁用谁知道),它是一种很流行的格式,全称叫做便携式文档格式。

(没用过?不知道是啥?不好用?)

那好吧,萝卜白菜各有所爱,如果你需要那种不用修改内容,但是需要更好的分享以及打印效果的话,强烈推荐你使用PDF。试过就会爱上,爱上就不会丢弃!

既然,很有可能你会爱上PDF,那么今天通过这个教案就来看一下如何制作PDF把。

有这么两种方法:

第一种,逐个字符的将内容敲进文本文档或者MS word里边

第二种,或者使用今天我们讲到的知识点,直接对文档进行拍照,然后使用今天学习的代码直接转成PDF文件。

第一种还是第二种,怎么选择就看你咯。

好啦,来看看我们的方法。

使用pdf插件

pdf是一个flutter的扩展包,他被分成两个部分

第一个部分,一个底层的负责pdf生成的库

第二部分,想Flutter一样的组件系统,是一个简单易用的创建pdf的工具

据我局限的知识存量来说,它的使用是非常简单。它可以创建包括图形、图片、文本等等组织形式的多页文档,是全方位立体式的强有力的工具,并且用TrueType字体渲染。

如此牛牛的扩展包怎么用捏?

第一步:装他、装他、还是装他

在你的项目根目录下,修改pubspec.yaml文件内容:

dependencies: pdf: ^3.6.5

同步!

你也可以使用如下命令直接安装它的最新版本

flutter pub add pdf

第二步:写代码

用之前要先导入

import 'package:pdf/pdf.dart'; import 'package:pdf/widgets.dart' as pw;

然后实例化

final pdf = pw.Document();

最后,就可以往这个文档中添加一页内容。同时,要指定这个文档的页面格式,在指定位置构建内容。

pdf.addPage(pw.Page( pageFormat: PdfPageFormat.a4, build: (pw.Context context) { return pw.Center( child: pw.Text("Hello World"), ); // Center })); // Page

如果你想使用一张图片,那么还需要实例化MemoryImage,并读取文件图片数据。

final image = pw.MemoryImage( File('test.webp').readAsBytesSync(), );

之后,就可将这个图片数据添加到PDF文档中了,就像下方代码那样:

pdf.addPage(pw.Page(build: (pw.Context context) { return pw.Center( child: pw.Image(image), ); // Center })); // Page

你也可以指定ttf(TrueType Font)

final Uint8List fontData = File('open-sans.ttf').readAsBytesSync(); final ttf = pw.Font.ttf(fontData.buffer.asByteData()); pdf.addPage(pw.Page( pageFormat: PdfPageFormat.a4, build: (pw.Context context) { return pw.Center( child: pw.Text('Hello World', style: pw.TextStyle(font: ttf, fontSize: 40)), ); // Center })); // Page

写完了,一定不要忘记保存文件

// On Flutter, use the [path_provider](https://pub.dev/packages/path_provider) library: // final output = await getTemporaryDirectory(); // final file = File("${output.path}/example.pdf"); final file = File("example.pdf"); await file.writeAsBytes(await pdf.save());


好了,在木辛老师的讲义中,知识就是这么简单!通过这些简单有趣的知识,你就可以创造出很多功能强大的工具或者软件,还等什么,赶紧去干起来吧!

请大家关注木辛老师的课程哟,获取更多编程知识和编程技巧。接下来,木辛老师和大家一步一步地学习Flutter知识吧。

快乐编程,快乐成长!

咱们下节课再见,88~