
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
PDF.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配置示例
创建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 https://github.com/mozilla/pdf.js.git 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您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务