当前位置:首页 > JavaScript

js实现pdf在线预览

2026-01-13 13:56:51JavaScript

使用PDF.js实现PDF在线预览

PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤:

  1. 引入PDF.js库 在HTML文件中引入PDF.js的核心库和渲染库:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.10.377/pdf.min.js"></script>
  2. 创建Canvas容器 在HTML中创建一个Canvas元素用于渲染PDF:

    <canvas id="pdf-canvas"></canvas>
  3. 初始化PDF.js并渲染 使用JavaScript代码加载和渲染PDF:

    const pdfUrl = 'your-file.pdf';
    const canvas = document.getElementById('pdf-canvas');
    
    pdfjsLib.getDocument(pdfUrl).promise.then(function(pdf) {
      pdf.getPage(1).then(function(page) {
        const viewport = page.getViewport({ scale: 1.0 });
        canvas.width = viewport.width;
        canvas.height = viewport.height;
    
        page.render({
          canvasContext: canvas.getContext('2d'),
          viewport: viewport
        });
      });
    });

使用iframe嵌入PDF预览

另一种简单的方法是使用HTML5的iframe元素直接嵌入PDF文件:

<iframe 
  src="your-file.pdf" 
  width="100%" 
  height="600px"
  style="border: none;">
</iframe>

这种方法依赖浏览器的内置PDF查看器,不同浏览器可能表现不一致。

使用第三方服务预览PDF

对于不想自己托管PDF文件的场景,可以使用Google Docs Viewer等第三方服务:

<iframe 
  src="https://docs.google.com/viewer?url=http://yourdomain.com/your-file.pdf&embedded=true"
  width="100%"
  height="600px"
  frameborder="0">
</iframe>

处理大文件的分页加载

对于大型PDF文件,可以实现分页加载功能:

let currentPage = 1;
const totalPages = pdf.numPages;

function renderPage(pageNum) {
  pdf.getPage(pageNum).then(function(page) {
    const viewport = page.getViewport({ scale: 1.0 });
    canvas.width = viewport.width;
    canvas.height = viewport.height;

    page.render({
      canvasContext: canvas.getContext('2d'),
      viewport: viewport
    });
  });
}

document.getElementById('next').addEventListener('click', () => {
  if(currentPage < totalPages) {
    currentPage++;
    renderPage(currentPage);
  }
});

document.getElementById('prev').addEventListener('click', () => {
  if(currentPage > 1) {
    currentPage--;
    renderPage(currentPage);
  }
});

注意事项

  • PDF.js需要从相同域名加载PDF文件,或目标服务器允许跨域请求
  • 对于敏感文件,应考虑添加权限控制
  • 移动端需要考虑触摸事件和响应式布局
  • 大型PDF文件可能需要实现延迟加载或分块加载策略

js实现pdf在线预览

标签: 在线js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

vue实现word在线

vue实现word在线

Vue 实现 Word 在线编辑与预览 方案一:使用 docx.js 与前端解析 安装依赖库 docx 和 file-saver,用于生成和下载 Word 文件: npm install docx…

css3动画在线制作

css3动画在线制作

CSS3 动画在线制作工具 以下是一些常用的在线工具和平台,可以帮助快速生成 CSS3 动画代码,无需手动编写: Animista 网址:https://animista.net/ 特点:提供预设的…

css3在线动画制作

css3在线动画制作

CSS3 在线动画制作工具推荐 Animista 提供可视化界面生成 CSS 动画代码,支持自定义缓动效果、延迟和迭代次数。可直接复制生成的 @keyframes 和动画属性代码到项目中。 网址:ht…

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览功能 在线预览功能通常用于查看文档、图片、PDF等文件内容,无需下载即可直接浏览。以下是几种常见的实现方式: 使用 iframe 嵌入预览 <template>…

vue实现在线学习系统

vue实现在线学习系统

实现功能模块设计 在线学习系统通常需要包含课程展示、用户管理、学习进度跟踪、互动讨论等功能模块。使用Vue.js可以高效构建这些模块。 课程展示模块需要设计课程卡片、分类筛选、搜索功能。用户管理模…