【问题标题】:With flutter printing package, how do I print a PDF from a URL?使用颤振打印包,如何从 URL 打印 PDF?
【发布时间】:2020-04-28 16:21:35
【问题描述】:

我正在使用flutter中的打印包:https://pub.dev/packages/printing

该文档展示了如何从头开始创建 PDF。我已经有一个 URL 的 PDF。有没有办法检索它并与包装一起打印?还是有其他包的替代方法?

【问题讨论】:

    标签: pdf flutter printing


    【解决方案1】:

    来自插件文档使用 path_provider 库保存 pdf 文件:

        final output = await getTemporaryDirectory();
    final file = File("${output.path}/example.pdf");
    await file.writeAsBytes(pdf.save());
    

    使用 iOS 或 Android 打印服务打印文档

    await Printing.layoutPdf(
      onLayout: (PdfPageFormat format) async => pdf.save());
    

    【讨论】:

      【解决方案2】:

      我尝试了以下方法来实现打印功能:

      • 直接获取远程数据字节
        搭配流行包printing
      var data = await http.get(url);
      await Printing.layoutPdf(onLayout: (_) => data.bodyBytes);
      

      但我发现这种方式在打印滚筒大小的纸张(POS打印机)时会出现打印区域混乱的问题

      • 分享(第一个的替代品)
        使用 sharePdf 函数
      var data = await http.get(url);
      await Printing.sharePdf(bytes: data.bodyBytes, filename: 'my-document.pdf');
      

      这需要一个额外的步骤来打印(点击浏览器的“功能”图标然后打印)

      • 从浏览器查看并以本机方式打印
        看看这个包url_launcher
      import 'package:url_launcher/url_launcher.dart';
      
      if (await canLaunch(url)) {
        await launch(url);
      }
      

      这需要一个额外的步骤来打印(点击浏览器的“功能”图标然后打印)

      var data = await http.get(url);
      final output = await getTemporaryDirectory();
      final file = File('${output.path}/your_file_name_${new DateTime.now().microsecondsSinceEpoch}.pdf');
      await file.writeAsBytes(data.bodyBytes);
      await FlutterPdfPrinter.printFile(file.path);
      

      ***此包将有频道注册者issue,安装后请运行flutter clean***
      这个包有点过时,但它适用于我用滚筒 80 尺寸的 pdf 打印。使用Swift UIKit包,兼容性好。

      总结

      我的方案是打印一个无限高的滚筒 80 尺寸 pdf,打印包不适用于它无法正确预览 pdf。所以我改用最后一种打印方式,这对我有用。如果只是打印 A4 或普通尺寸的 PDF,打印包还是不错的选择。

      【讨论】:

        猜你喜欢
        • 2020-06-22
        • 1970-01-01
        • 2022-11-05
        • 2022-08-14
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 1970-01-01
        • 2021-11-02
        相关资源
        最近更新 更多