【问题标题】:How to force / set locale in PDF.js如何在 PDF.js 中强制/设置语言环境
【发布时间】:2021-03-03 01:10:40
【问题描述】:

我正在从旧版本的 PDF.JS (1.9.426) 升级到最新的稳定版 (2.5.207)。

以前,强制语言环境与您的应用程序当前的语言环境相匹配非常简单。 您只需将其作为 URL 中的参数传递; /PDFJS/web/viewer.html?file=example.pdf #locale=zh-CN

但是,在升级时,我看到这是no longer recommended。 尽管文档仍然是mentioning it

在我的应用程序中,用户可以覆盖他们喜欢的区域设置,因此它可能与浏览器不匹配。

我研究了embed / object,这似乎是解决方案,直到我意识到Android 浏览器don't support embedded PDF viewing

我一直在寻找实现此功能的正确方法,但到目前为止我还没有找到好的或推荐的答案。 似乎 PDF.js 仍然是最好的全方位解决方案,但我无法弄清楚使用它来简单地将现有 PDF 渲染到 div 的正确方法。

据我所知,开发人员只是删除了该选项,没有升级文档,并建议在 viewer.js 中对语言环境进行硬编码(对我来说,这有点不合时宜)。

我希望有人能指出我正确的方向,并可能帮助其他遇到此问题的人。

【问题讨论】:

    标签: html pdf pdf.js


    【解决方案1】:

    对于任何想要让这个工作正常的人(直到出现更好的答案),这里有一个修复;

    在 viewer.js 中找到方法“_initializeL10n”(v2.5.207 中的第 552 行);

    async _initializeL10n() {
        this.l10n = this.externalServices.createL10n({
            locale: _app_options.AppOptions.get("locale")
        });
        const dir = await this.l10n.getDirection();
        document.getElementsByTagName("html")[0].dir = dir;
    }
    

    改成这个;

    async _initializeL10n() {
        var hash = document.location.hash.substring(1);
        var hashParams = (0, _ui_utils.parseQueryString)(hash);
        this.l10n = this.externalServices.createL10n({
            locale: ('locale' in hashParams) ? hashParams['locale'] : _app_options.AppOptions.get("locale")
        });
        const dir = await this.l10n.getDirection();
        document.getElementsByTagName("html")[0].dir = dir;
    }
    

    这会从旧版本中获取我们需要的代码,并让 #locale= 工作。

    我希望在某个时候被告知正确的做法。

    【讨论】:

      猜你喜欢
      • 2018-03-31
      • 2011-06-24
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2021-11-12
      • 2014-05-29
      • 2014-01-01
      • 2019-08-27
      相关资源
      最近更新 更多