Android 使用 WebView 直接加载 PDF 文件,通过 JS 实现

加载 PDF 文件,使用 WebView 来进行加载PDF(比如某个远端文件 XXXX.pdf )。

需要两个文件,存放在 assets 目录下 跟 WebViewActivity 同级

文件 1 pdf.js
ini 复制代码
var url = location.search.substring(1);

PDFJS.cMapUrl = 'https://unpkg.com/pdfjs-dist@1.9.426/cmaps/';
PDFJS.cMapPacked = true;

var pdfDoc = null;

function createPage() {
  var div = document.createElement("canvas");  document.body.appendChild(div);
  return div;
}

function renderPage(num) {
  pdfDoc.getPage(num).then(function (page) {
    var viewport = page.getViewport(2.0);
    var canvas = createPage();
    var ctx = canvas.getContext('2d');

    canvas.height = viewport.height;
    canvas.width = viewport.width;

    page.render({
      canvasContext: ctx,
      viewport: viewport
    });
  });
}

PDFJS.getDocument(url).then(function (pdf) {
  pdfDoc = pdf;
  for (var i = 1; i <= pdfDoc.numPages; i++) {
    renderPage(i)
  }
});
文件 2 pdf.html
xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
    <title></title>
    <style type="text/css">
        canvas {
          width: 100%;
          height: 100%;
          border: 1px solid black;
        }
    </style>
    <script src="https://unpkg.com/pdfjs-dist@1.9.426/build/pdf.min.js"></script>
    <script type="text/javascript" src="pdf.js"></script>
</head>
<body>
</body>
</html>

使用方法 webView.loadUrl("file:///android_asset/pdf.html?文件地址")

相关推荐
dalancon8 分钟前
Android LMKD 服务
android
迪普阳光开朗很健康19 分钟前
告别繁琐!用ApkInfoQuick快速提取APK关键信息
android·rust·react
深度智能Ai22 分钟前
GPT Image 2 图片生成 API 接口对接文档
android·gpt
VincentWei9538 分钟前
Compose:1.5 无状态与状态提升(State Hoisting)
android
xingpanvip42 分钟前
星盘接口开发文档:天象盘接口指南
android·开发语言·python·php·lua
天涯海风1 小时前
写一个录音并保存到手机的工具 安卓工具类
android·java·智能手机
黄林晴1 小时前
Koin 开发者炸了!7 条规则根治运行时错误,自动扫描太香了
android
恋猫de小郭1 小时前
Flutter 3.41.8 又双叒修复调试问题,草台班子日常 hotfix
android·前端·flutter
火山上的企鹅1 小时前
QGC 二次开发(RTK):内置 NTRIP Client,实现 CORS 差分数据接入与 GPS_RTCM_DATA 转发
android·无人机·rtk·qgroundcontrol
Kapaseker1 小时前
客官,你误会 Compose Strong Skipping 了
android·kotlin