【问题标题】:Using syncfusion_flutter_pdfviewer with flutter web将syncfusion_flutter_pdfviewer与flutter web一起使用
【发布时间】:2021-05-25 19:50:21
【问题描述】:

syncfusion_flutter_pdfviewer 刚刚于 5 月 19 日发布,我想用它来将我的应用程序移植到网络上,但它不起作用。我的代码如下所示:

class _VPMontagState extends State<VPMontag> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('mytext'),
      ),
      body: Container(
        child: SfPdfViewer.network('myurl'),
      )
    );
  }
}

他们还在他们的文档中写道,你应该添加

<script src="//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.min.js"></script>
<script type="text/javascript">
   pdfjsLib.GlobalWorkerOptions.workerSrc = "//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.worker.min.js";
</script>

进入index.html。我这样做了,但无论如何它都不起作用。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    99% 的可能性是您遇到了与 CORS 相关的问题。 PDF 查看器尝试加载与您的应用程序(或本地主机)不同域的 PDF。

    为了解决这个问题,你有几个选择:

    • 使用部署在与您相同域中的代理,这会将调用重新路由到 PDF
    • 如果您有权访问存储 PDF 的存储服务器,则可以在其上配置 CORS

    基本上,您在 canvaskit 渲染器上显示外部图像时遇到了类似的问题。 (在您的情况下,这对于 HTML 渲染器也是如此,因为它看起来像 PDF 查看器使用 AJAX 加载 PDF)。 See here for details

    【讨论】:

    • 感谢您的回答。我可以访问存储 pdf 的服务器,但如何在其上配置 CORS?我的应用托管在 firebase 中,所以我认为我无法在其上部署代理,或者可以吗?
    • 那么我认为您可以在 Firebase 存储上配置 CORS。类似问题请见stackoverflow.com/questions/47768136/cors-on-firebase-storagestackoverflow.com/questions/37760695/…
    • 我真的必须使用 Firebase 存储吗?我已经有我的应用程序的 android 版本,我必须多次切换 pdf 文件。它不想在旧服务器和 Firebase 存储上这样做。此外,所有用户都必须更新应用程序,并且许多用户使用从服务器提取文件的相当旧的版本。
    • 您可以使用任何您喜欢的存储空间。如果您将存储文件托管在与您的应用程序相同的域上,那么您很好,并且无需额外的 CORS 配置即可访问文件(除了 localhost 调试,这可以轻松解决)。如果您的文件位于不同的域中,那么您需要能够配置 CORS 的存储空间。
    • 对我来说,看起来服务器已经为 CORS 配置了。在查看存储在服务器上的 PDF 时,我在开发人员工具的“网络”选项卡中发现了这一点:imgur.com/a/Xn2UYs0
    猜你喜欢
    • 1970-01-01
    • 2022-08-23
    • 2018-01-17
    • 2020-12-19
    • 2022-08-22
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    相关资源
    最近更新 更多