
docker13972684/pdfjs-viewerPDF.js是一个基于HTML5构建的可移植文档格式(PDF)查看器,由Mozilla主导并由社区驱动开发。本Docker镜像封装了PDF.js的核心功能,提供了便捷的部署方式,可快速集成到Web应用、本地开发环境或演示系统中,实现PDF文件的解析与渲染。
async/await、ReadableStream等现代JavaScript特性bashdocker pull pdfjs-viewer:latest # 或指定版本(如legacy版) docker pull pdfjs-viewer:legacy
docker run快速启动现代浏览器版本:
bashdocker run -d \ --name pdfjs-viewer \ -p 8080:80 \ -v /path/to/your/pdfs:/usr/share/nginx/html/pdfs \ pdfjs-viewer:latest
访问 http://localhost:8080/web/viewer.html 即可打开查看器,通过URL参数加载PDF文件:
http://localhost:8080/web/viewer.html?file=/pdfs/your-document.pdf
旧版浏览器兼容版本:
bashdocker run -d \ --name pdfjs-viewer-legacy \ -p 8081:80 \ pdfjs-viewer:legacy
访问 http://localhost:8081/legacy/web/viewer.html 使用旧版查看器。
创建docker-compose.yml:
yamlversion: '3.8' services: pdfjs: image: pdfjs-viewer:latest container_name: pdfjs-viewer ports: - "8080:80" volumes: - ./pdfs:/usr/share/nginx/html/pdfs # 挂载本地PDF文件目录 - ./custom-viewer:/usr/share/nginx/html/web # 自定义查看器界面(可选) environment: - PORT=80 - VIEWER_PATH=/web/viewer.html restart: unless-stopped
启动服务:
bashdocker-compose up -d
| 环境变量 | 描述 | 默认值 |
|---|---|---|
PORT | 容器内部服务端口 | 80 |
VIEWER_PATH | 查看器入口文件路径 | /web/viewer.html |
LEGACY_MODE | 是否启用旧版浏览器兼容模式 | false(latest镜像) |
CORS_ALLOWED | 允许跨域访问的源(以逗号分隔) | * |
-v /local/path:/usr/share/nginx/html/pdfs 挂载本地目录,可在查看器中通过?file=/pdfs/filename.pdf访问web目录(包含viewer.html等文件)到/usr/share/nginx/html/web,实现界面定制通过API在自定义Web应用中集成PDF.js(需在应用中引入容器内的pdf.js资源):
html<!-- 在你的Web页面中引入PDF.js --> <script src="http://localhost:8080/build/pdf.js"></script> <script> // 初始化PDF查看器 async function renderPDF(url) { const pdfjsLib = window['pdfjs-dist/build/pdf']; pdfjsLib.GlobalWorkerOptions.workerSrc = 'http://localhost:8080/build/pdf.worker.js'; const pdfDoc = await pdfjsLib.getDocument(url).promise; console.log(`PDF加载完成,共${pdfDoc.numPages}页`); // 渲染第一页 const page = await pdfDoc.getPage(1); const viewport = page.getViewport({ scale: 1.5 }); const canvas = document.getElementById('pdfCanvas'); const context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; await page.render({ canvasContext: context, viewport: viewport }).promise; } // 加载PDF文件 renderPDF('/pdfs/sample.pdf'); </script> <canvas id="pdfCanvas"></canvas>
如需基于最新代码构建镜像,可按以下步骤操作:
bashgit clone [***] cd pdf.js
Dockerfile:dockerfileFROM node:18-alpine AS builder WORKDIR /app COPY . . RUN npm install -g gulp-cli && npm install && gulp generic FROM nginx:alpine COPY --from=builder /app/build/generic /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
bashdocker build -t custom-pdfjs-viewer .
A: 确保PDF文件已挂载到容器的/usr/share/nginx/html/pdfs目录,并通过正确URL访问:viewer.html?file=/pdfs/filename.pdf
A: 使用legacy标签镜像,并访问/legacy/web/viewer.html
A: 挂载包含自定义viewer.html和相关资源的目录到/usr/share/nginx/html/web
http://<容器IP>:<端口>/web/viewer.htmlhttp://<容器IP>:<端口>/legacy/web/viewer.html

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务