pdf.js:如何正确设置初始比例?

jeu*_*eum 5 javascript pdf mozilla pdf.js

我正在尝试使pdf.js(完整版)适应我的需要,我只想将初始比例设置为“页面适合”,而不管以前的比例如何。所以我尝试修改viewer.js以实现此目标...

首先,将忽略DEFAULT_SCALE全局(第27行),似乎初始比例是由加载顺序根据先前的比例定义的。

该文档由以下调用的加载功能(第832行)加载,但'scale'参数未设置初始比例...

load: function pdfViewLoad(pdfDocument, scale) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

尝试在firstPagePromise.then ...函数(第903行)中设置缩放比例也无效:

firstPagePromise.then(function(pdfPage) {
   scale = 'page-fit';
   ...
}
Run Code Online (Sandbox Code Playgroud)

还有一个PDFView.currentScale属性,我试图在不同的地方设置它,但这都不影响:

this.currentScale = 'page-fit';
Run Code Online (Sandbox Code Playgroud)

最后,我可以通过将setScale函数调用到onePageRendered.then ...函数(第920行)中来设置此缩放比例:

onePageRendered.then(function () {
   PDFView.setScale('page-fit', true);
   ...
}
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是setScale函数会被调用两次,因为它似乎是由onePageRendered(我不知道在哪里)使用先前的比例(?)第一次调用的。这个解决方案使两个可见的渲染,并不能真正令人满意...

请问我该怎么做呢?

jeu*_*eum 0

解决方案在这里,谢谢Snuffleupagus

由于初始比例可以通过多种方式设置(从浏览器历史记录、通过首选项、通过视图历史记录或通过使用哈希参数指定比例),我认为始终强制使用特定比例的唯一方法load 会是这样的:

  1. 更改DEFAULT_SCALE为您想要的内容:https://github.com/mozilla/pdf.js/blob/master/web/viewer.js#L27
  2. 替换:https://github.com/mozilla/pdf.js/blob/master/web/viewer.js#L1117-L1121,为:this.setScale(DEFAULT_SCALE, true);