菜鸟-创作你的创作

pdf.js

pdf.js 是个好东西 👍
简单说:它让浏览器“原生”显示 PDF,不用任何插件。下面我给你一份从原理 → 用法 → 本地部署 → 二次开发的完整实战说明。


一、pdf.js 是什么?

pdf.jsMozilla(火狐)官方开源项目

👉 用 JavaScript + HTML5 Canvas 在浏览器里解析和渲染 PDF
👉 不依赖 Flash / 插件
👉 支持 Chrome / Edge / Firefox / Safari

GitHub 项目:
https://github.com/mozilla/pdf.js


二、pdf.js 能干什么?


三、最简单的使用方式(3 分钟上手)

方法 1:直接用官方 Viewer(推荐新手)

<iframe
  src="https://mozilla.github.io/pdf.js/web/viewer.html?file=demo.pdf"
  width="100%"
  height="800">
</iframe>

只要把 demo.pdf 换成你的 PDF 路径即可。


方法 2:本地部署 pdf.js(最常用)

1️⃣ 下载

git clone https://github.com/mozilla/pdf.js.git

或下载 release 包。

2️⃣ 使用 web/viewer.html

pdfjs/
 ├─ web/
 │   ├─ viewer.html
 │   ├─ viewer.js
 │   └─ viewer.css
 ├─ build/

访问:

http://localhost/pdfjs/web/viewer.html?file=test.pdf


四、前端最小代码示例(核心 API)

<canvas id="pdf"></canvas>

<script src="pdf.min.js"></script>
<script>
pdfjsLib.getDocument('test.pdf').promise.then(pdf => {
  pdf.getPage(1).then(page => {
    const scale = 1.5;
    const viewport = page.getViewport({ scale });

    const canvas = document.getElementById('pdf');
    const ctx = canvas.getContext('2d');
    canvas.width = viewport.width;
    canvas.height = viewport.height;

    page.render({
      canvasContext: ctx,
      viewport: viewport
    });
  });
});
</script>

👉 适合二次开发、自定义 UI


五、常见功能怎么实现?

📄 翻页

pdf.getPage(pageNum)

🔍 文本搜索

page.getTextContent()

🔎 缩放

page.getViewport({ scale: 2 })

🖨 打印


六、pdf.js vs 其他方案

方案优点缺点
pdf.js免费 / 可控 / 开源复杂 PDF 慢
iframe + 浏览器零代码不可控
商业 SDK功能强贵 💰

七、常见坑(你很可能会遇到)

❗ 1. 跨域问题

PDF 和网页必须同源
或服务器开启 CORS

❗ 2. 中文乱码?

pdf.js 没问题
👉 PDF 本身没嵌入字体才会乱码

❗ 3. 大文件慢


八、适合哪些项目?


九、你现在是想“用”还是“改” pdf.js?

你可以直接说:

我可以直接给你:

一句话:
pdf.js 我可以带你从“能用”到“专业级”📄🚀

退出移动版