一个dart编写的Flutter PDF 查看器

大家好,今天周末了,也许大家还在睡觉没起床,今天我有来码字了,又来给大家分享技术文章了,让关注我的朋友不失望,大家一起进步技术,在新的一年里更高一层。

早上7点就起床了来到了公司,最近赶项目所以加班赶项目,虽然从北京回到了重庆,但是工作还是一如既往的要进行。写代码走到哪里都一样,如果公司允许就好了,在家办公,因为我们程序员只需要有台电脑一杯咖啡就能坚持很久的坐那儿,可以忘记吃饭,忘记上厕所,不停的编写程序,这就是程序员。

回到重庆上班一样是坐地铁上班,只是重庆的叫法不一样,叫做轻轨在我眼里其实都是一样,在轻轨里面座位跟北京的地铁还不一样,那就是重庆的座位可能坐不稳。特别滑,毕竟重庆是一座山城,歪来歪去的。

好了今天废话不说那么多吧,也是公司需求需要编写一个pdf查看器,而是用Flutter来编写程序,开始是自己用dart来写,后来发现有很多问题,就去github上面找了一圈,用了一下还行。今天就分享给大家吧。谢谢。

本头条核心宗旨

技术刚刚好经历

近几年,移动端跨平台开发技术层出不穷,从Facebook家的ReactNative,到阿里家WEEX,前端技术在移动端跨平台开发中大展身手,技术刚刚好作为一名Android开发,经历了从Reactjs到Vuejs的不断学习。而在2018年,我们的主角变成了Flutter,这是Goolge开源的一个移动端跨平台解决方案,可以快速开发精美的移动App。希望跟大家一起学习,一起进步!

这个Flutter库分为两个部分:

  • 一个底层的Pdf创建库,它负责处理pdf的生成,dart编写的
  • 然后就是一个像Flutter Widgets,可以创建更高级的pdf查看器
  • 它可以使用TrueType字体创建包含图形,图像和文本的多页PDF文档,便于使用和阅读,

    PDF文档

    使用printing包
    https://pub.dev/packages/printing 进行完整的打印和共享操作。

    坐标系使用内部Pdf单位:

  • 1.0定义为1 / 72.0英寸
  • 您可以使用PdfPageFormat中定义的厘米,毫米和英寸常量
  • 使用例子

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

    要加载图像,可以使用Flutter库图像:

    final img = decodeImage(File('test.webp').readAsBytesSync());final image = PdfImage(  pdf.document,  image: img.data.buffer.asUint8List(),  width: img.width,  height: img.height,);pdf.addPage(Page(    build: (Context context) {      return Center(        child: Image(image),      ); // Center    })); // Page

    要使用TrueType字体:

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

    目前这个库已经开发到1.4.0版本了,还算比较稳定,希望大家喜欢,由于不能发链接,需要的可以看看评论,谢谢大家了。

    谢谢观看技术刚刚好的文章,技术刚刚好是个人维护,每天至少更新一篇Flutter技术文章,实时为大家播 Flutter最新消息。如果你刚好也在关注Flutter这门技术,那就跟我一起学习进步吧,你的赞,收藏,转发是对我个人最大的支持,维护不易, 。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2020年1月7日
    下一篇 2020年1月7日

    相关推荐