【发布时间】:2018-12-31 14:25:05
【问题描述】:
我正在尝试将我的应用与 PDF 捆绑在一起,并让用户在本机查看器中打开它。
我试过了:
- 将 PDF 的数据复制到“临时目录”或“文档目录”(来自 path_provider)并从那里打开
- 要打开,我使用“url_launcher”打开文件。我尝试使用这两个文件:
//...urls 并仅传递本地路径,即/.../等
文件肯定存在,这两个位置、两个平台上的文件都在应用程序的沙箱中似乎是权限问题。
该文件确实存在,我可以从网址打开 PDF。
这是flutter可以做到的吗?
2019 年 12 月 8 日更新
我刚刚被 SO 告知,这个问题有很多观点,但没有好的答案。对于这个项目,我最终尝试了 Cordova、Flutter、React Native 并最终放弃并创建了两个原生应用程序来完成我需要做的事情。他们工作正常,但客户想要进行大量的用户体验更改。
所以最后我将代码从事物的本机端包装到一个颤振插件中,然后在颤振中进行用户体验。这就是背景故事,这是我一起破解的技术规格:
对于 iOS,有一个在 github 的 iOS 11 中使用他们的 PDF 工具包的示例,我在那里做了一些工作,并且在 repo 中有一堆手动创建的功能,所以我将我想要的 PDF 附加到那个项目,并且写了一个脚本来展示它们,然后使用颤振桥启动。
对于 Android,情况大致相同 - 我将文件从应用程序包(不是颤振资产)复制到临时目录,然后创建一个共享链接并使用本机系统查看器启动 pdf。
总而言之,这是一个庞大的东西,虽然不是 Flutter 的错,就像我说的,我使用了一堆多平台框架,但没有一个能以令人满意的方式完成这项工作。不过,我确信更好的开发人员可以提出可行的解决方案。
编辑:已经提到使用 url_launcher 和 open_file 的组合。它们适用于外部文件,但不适用于捆绑资产。
【问题讨论】:
-
How to open and PDF or word document in the [Flutter] 的可能重复项。在那里检查答案。
-
不幸的是不一样,我需要捆绑资产然后打开它,open_file 和 url_opener 非常适合这种情况。
-
open_file 也对我有用。
-
谢谢@TatendaZifudzi pub.dev/packages/open_file