如何在WebView中显示嵌入的PDF文件?

问题描述 投票:0回答:1

我需要关于如何解决这个问题的建议/建议。目前,我正在 PHP 8.2 中构建一个 Web 应用程序,用户可以在其中上传 PDF 文件,并且只有具有特定角色的用户才能查看它们。该应用程序也可以通过移动应用程序使用,但是我的团队决定我们将使用 Web 视图在移动应用程序中列出/显示 pdf 文件。 Android 版的 Web 应用程序使用 Kotlin 构建,iOS 版使用 Swift 构建。此外,要检索文件,“具有特定角色的用户”必须提供其 JWT 令牌进行身份验证,然后系统才能从端点检索文件。

我还想指出,PDF 文件存储在我的 Web 服务器中,以便 UI 可以轻松检索它。

我们计划显示PDF文件的方式是,将PDF文件嵌入到WebView页面中。到目前为止我们已经尝试了多种方法:

  1. iframe 标签(使用存储中的直接路径)
  2. iframe 标签(使用 Google 文档查看器)
  3. PDF.js(JS 库)

对于第一种方法,Android 无法加载 PDF,但 iOS 可以加载它。对于第二种方法,Android 和 iOS 都设法显示它,但是我必须冒险将 JWT 放入 URL 中,因为没有其他方法可以传递 JWT 令牌进行身份验证。对于第三种方法,Android 和 iOS 根本无法加载 PDF。

我感觉我已经走进了死胡同,这个功能似乎不可能在 WebView 中实现。对于那里的开发人员,您是否创建过类似的东西?你们用什么方法检索 PDF 文件,以便可以在 iOS 和 Android 的 WebView 页面中读取它。

php pdf webview uiwebview android-webview
1个回答
0
投票

我们仅使用 php 和 pdfjs 做了同样的事情。 基于角色的用户权限仅查看特定的 pdf 文件。 请检查下面的代码我们是如何做到他的。 诀窍是您必须通过获取存储在 public 文件夹上方目录中的 pdf 文件的 base64 编码数据来显示内容。并且文件参数是通过get参数传递的


   <?php
       
       session_start();

       include "conn.php";
       $file = $_GET['file_id'];
  
       // Check file list from mysql database if permission exists
       $q= mysqli_query("select * from files where id='$file' ");
       
        // check file view permission respective to logged user
        
        if($permission){

             $file_path ="../path_to_pdf_above_public_folder/".$file;
             
             $pdf_data= file_get_contents($file_path);

             include "pdf_viewer.php";
             // implements your jspdf into this file to display pdf from $pdf_data variable;  
                     

        }else{
           die("You DO Not have permission");
        }

  ?>

要从 Base64 数据实现 pdf,请参阅下面的链接。

https://github.com/mozilla/pdf.js/blob/master/examples/learning/helloworld64.html

© www.soinside.com 2019 - 2024. All rights reserved.