PDF.js FAQs

PDF.js FAQs

可以在默认阅读器中指定一个不同PDF文件吗?

可以修改 web/app_options.js 文件中的 defaultUrl app 选项,或者在阅读器 URL 后添加 ?file= 查询字符串,例如:http://mozilla.github.com/pdf.js/web/viewer.html?file=compressed.tracemonkey-pldi-09.pdf。在后面这种情况时,PDF 路径/URL 必须使用encodeURIComponent()编码。

可以在不载入任何PDF文件时启动阅读器,此时需要将 defaultUrl app 选项设为一个空字符串,或者使用 ?file= 查询字符串时不指定文件路径。后期可使用PDFViewerApplication.open(file) 来载入PDF文件。

可以使用原始二进制数据来打开PDF文件:在PDFViewerApplication.open 调用中使用 Uint8Array 替代 URL。如果是base64 编码数据,需要先进行解码(decode) ——并非所有浏览器都支持 atob 或数据 URI scheme。(base64 转换操作会消耗更多内存,所以我们建议先将原始PDF数据作为类型数组(typed array) 进行传递)。

可以从另一个服务器中载入 PDF 吗(跨域请求)?

默认是不行的,但是可以实现。PDF.js 运行时权限和其他 JavaScript 代码一样, 这意味着不能执行跨域请求(参考 Same origin policyan example)。有多种解决方法,比如使用 CORS (参考 unsafe headers issueAccess-Control-Expose-Headers issue)或者在服务器上设置一个代理,用于给 PDF.js 提供 PDF 文件(示例: https://github.com/mozilla/pdf.js/issues/1000#issuecomment-133756244)。 请注意 generic/demo viewer 禁止了这项功能,如果不是布署在 mozilla.github.io 域以避免内容欺骗(content spoofing) (参考https://github.com/mozilla/pdf.js/pull/6916)。

支持什么浏览器?

从2.4.456版本起,我们默认为现代浏览器制作了一个 non-translated/non-polyfilled 构建。同时,我们也为旧浏览器提供了 translated/polyfilled 构建,使用的是一个单独的包(后缀为 -es5-dist.zip)。

目标在于支持所有 HTML5 兼容的浏览器,但是由于浏览器/版本的不同,对PDF特性的支持也各不相同。一般地,支持情况如下。如果未指明具体版本,一般指的是最新的桌面/移动版本。

浏览器支持Automated testing备注
FirefoxYesWindows/Linux
ChromeYesWindows/Linux
OperaYesNone
Edge (基于Chromium)YesNone
IE 11/Edge (基于非Chromium)MostlyNone有些功能可能不可用,和现代浏览器相比性能上会更差。但是,在 2.6.347 稳定版本之后将不再支持。
Safari 10+MostlyNone出现过一些功能缺失,一般没有什么问题。移动设备只支持 iOS 10 及更高版本。
IE 10 and belowNoNone很多功能都不支持。

哪些浏览器有插件(在哪里可以找到安装流程)?

Chromium 插件是由一位 PDF.js 贡献者维护的。如果要安装Chromium插件,可参考 README

Firefox 35 及更高版本不再支持插件并将其标记为 disabled。PDF.js 是从 Firefox 19 后嵌入到浏览器的。通常是开发人员使用这个插件,想要将新版本的 PDF.js 库嵌入到旧版本的 Firefox 中。用户应该卸载插件,反转pdfjs.disabled 配置设置,并通过 Options -> Applications 将 PDF 文件应用程序选择为内部阅读器,以继续在Firefox中使用 PDF.js 查看PDF文件。

我会 JavaScript ,而且希望成为项目贡献者。我该怎么开始?

首先,你要准备好你的分支(fork)并配置好开发环境。别忘了阅读 Contributing 页。其次,你要熟悉PDF格式及PDF.js内部机理(PDF format and PDF.js internals)。再次,如果你没有一个确定的问题要修复,可以去 open issues labeled 5-good-beginner-bug 选择一个。 最后,提交一个 pull request 用于评审。在此过程中如果有问题或者想要找评审人员,建议在Matrix room联系 PDF.js 团队。

可以在PDF文件中添加注解(annotation)吗?

PDF.js 是用来阅读PDF文件的,而非编辑文件。所以我们并不支持添加任意形式的注解。但是,原文件中的注解是可以正常渲染出来的。

PDF.js 键盘快捷键都有哪些?

导航

Home、End、Page up、Page down 和所有方向键都可以用来在文件中进行导航。另外,还有下面这些导航快捷键:

  • 下一页: n、j、空格(仅限演示模式)、Enter(仅限演示模式)、 左键单击(仅限演示模式)。
  • 上一页: p、k、Shift + 空格(仅限演示模式)、Shift + Enter(仅限演示模式)、Shift + 左键单击(仅限演示模式)。

阅读器控件

可以使用用户界面按钮或者 ctrl + 鼠标滚轮来进行缩放,也可以使用键盘快捷键:

  • 放大视图: ctrl + +, ctrl + =
  • 缩小视图: ctrl + -
  • 恢复正常视图: ctrl + 0
  • 顺时针旋转文档: r
  • 逆时针旋转文档: shift + r
  • 激活演示模式: ctrl + alt + p (IE11中无效)
  • 启用手形工具: h
  • 启用文本选择工具: s
  • 移动焦点至“跳转到页”框: ctrl + alt + g
  • 在文档中查找文本: ctrl + f
  • 查找下一处出现位置: ctrl + g
  • 查找上一处出现位置: shift + ctrl + g
  • 下载文档: ctrl + s
  • 打印文档: ctrl + p
  • 打开文件: ctrl + o

(有的配置上需要使用meta替换ctrl

大纲侧边栏

  • 使用 F4 切换侧边栏是否可见。
  • 显示出侧边栏后,单击“显示文件大纲”按钮,可以显示出文件大纲。
  • 嵌套的大纲项可以单击项左侧的三角符号进行收缩和展开。
  • 如果要展开或收缩选中项下所有的项,可以在单击三角符号时按住Shift。
  • 双击“显示文件大纲”按钮,可以展开或收缩所有大纲项。

PDF.js 文件太大了。是否可以获取到简化版本的JS文件?

可以使用以下命令构建简化版本的 PDF.js:

gulp minified

我们使用 Terser 来简化 JS 文件。现在知道如果使用了高级选项的话,其他简化器会破坏 PDF.js 的代码(见 #710#2479)。在使用Google Closure Compiler等简化器时,使用 whitespace/comments removal 模式比较保险。如果你不是使用gulp minified,请注意必须配置简化器保留原有的 class/function 名称,否则构建出来后不一定能正常工作。

是否有 pre-built 版本的 PDF.js?

有。详情请参考 http://mozilla.github.io/pdf.js/getting_started/ 和 https://github.com/mozilla/pdf.js/wiki/Setup-PDF.js-in-a-website#official-releases 。通用 PDF.js 库构建版本可以从 https://github.com/mozilla/pdfjs-dist 获取到。这些构建版本可通过 NPM 安装npm install pdfjs-dist ,或者通过 Bower 安装bower install pdfjs-dist

未完,待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iShare_123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值