当前位置: 首页 > news >正文

Android 打开 在线 pdf 文件

 

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>H5 PDF 预览</title><script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script><style>body { margin: 0; padding: 10px; box-sizing: border-box; }#pdfContainer { width: 100%; min-height: 80vh; border: 1px solid #eee; }.loading { text-align: center; padding: 20px; color: #666; }.error { text-align: center; padding: 20px; color: red; }</style>
</head>
<body>
<div class="loading" id="loading">正在加载PDF...</div>
<div class="error" id="error" style="display: none;"></div>
<div id="pdfContainer"></div><script>pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.worker.min.js';// 从URL参数获取PDF地址function getPdfUrlFromParams() {const urlParams = new URLSearchParams(window.location.search);return urlParams.get('pdfUrl');}// 初始化PDF渲染async function renderPdf() {const container = document.getElementById('pdfContainer');const loading = document.getElementById('loading');const errorDiv = document.getElementById('error');// 获取PDF URLconst pdfUrl = getPdfUrlFromParams();if (!pdfUrl) {loading.style.display = 'none';errorDiv.style.display = 'block';errorDiv.textContent = '未提供PDF文件地址';return;}try {// 获取PDF文档const pdfDoc = await pdfjsLib.getDocument(pdfUrl).promise;loading.style.display = 'none';// 渲染每一页PDFfor (let pageNum = 1; pageNum <= pdfDoc.numPages; pageNum++) {const page = await pdfDoc.getPage(pageNum);// 设置渲染尺寸(适配移动端宽度)const viewport = page.getViewport({ scale: 1 });const scale = window.innerWidth / viewport.width;const scaledViewport = page.getViewport({ scale: scale });// 创建画布容器const canvas = document.createElement('canvas');const context = canvas.getContext('2d');canvas.width = scaledViewport.width;canvas.height = scaledViewport.height;container.appendChild(canvas);// 渲染页面await page.render({canvasContext: context,viewport: scaledViewport}).promise;}} catch (error) {loading.style.display = 'none';errorDiv.style.display = 'block';errorDiv.textContent = 'PDF加载失败,请检查文件地址';console.error('PDF加载错误:', error);}}// 页面加载完成后执行window.onload = renderPdf;
</script>
</body>
</html>

将这个文件放在服务器上,让后直接用webView打开,拼接上 pdfUrl= 链接,就Ok了

http://www.dtcms.com/a/605332.html

相关文章:

  • Python 教程:如何快速在 PDF 中添加水印(文字、图片)
  • 普中51单片机学习笔记-矩阵按键
  • 视觉语言模型新突破!开源项目解读
  • 深圳南山区住房和建设局网站官网天天向上做图网站
  • 微算法科技(NASDAQ MLGO)通过容量证明(PoC)构建全球存储资源池,为Web3应用提供低成本、抗审查的数据存储服务
  • 08-微服务原理篇(Canal-Redis)
  • 填写网站备案信息深圳建设材料价格网站
  • 【Spring Boot 报错已解决】Spring Boot开发避坑指南:Hibernate实体类主键配置详解与异常修复
  • 【CSS】cursor: auto, default, none 有什么区别?
  • 网站备案负责人三网合一营销型全网站
  • 7.2 Dify核心功能与技术架构:前后端分离、API接口、数据存储
  • 观察Springboot AI-Function Tools 执行过程
  • 信贷风控建设的多维意义解析
  • 如何在产品已上线后发现需求遗漏进行补救
  • 重卡充电桩平台支持针对不同车队单独配置计费规则
  • 美丽寮步网站建设高性能广州公关公司有哪些
  • Linux告别搜索卡顿:解决“Argument list too long”与实现文件内容秒搜
  • .NET驾驭Excel之力:工作簿与工作表操作基础
  • 基于 C++ OpenCV 生成小视频
  • 个人网站审批网站防止采集
  • 5.6 Multiple region interfaces
  • 聊聊缓存测试用例设计方案
  • IU5516T低功耗,1M@2.0A降压稳压器
  • Arbess从初级到进阶(3) - 使用Arbess+GitLab+SonarQube搭建Java项目自动化部署
  • 外贸的网站有哪些网站开发心得体会
  • Spring Boot参数校验全流程解析
  • C++进阶:(十)深度解析哈希表:原理、实现与实战
  • 6.3 代码自动生成Agent:程序员的AI副驾驶
  • 最好的网站开发系统网站设计介绍怎么写
  • 如何丰富网站内容在本地搭建wordpress