繁体   English   中英

用 pdf.js 在国外 url 上加载 pdf

[英]Load pdf on foreign url with pdf.js

我正在尝试将 pdf 从另一台服务器加载到我服务器中 pdf.js 的查看器。我收到错误“PDF.js v1.4.20(build:b15f335)消息:文件来源与查看器不匹配”

我已经检查了很多答案,其中很多人说通过代理传递 pdf url,例如:- 链接

经过大量搜索后,我发现他们发布了一个新补丁,其中锁定了任何 CDR 请求,如果我错了请纠正我:-这是链接

但在他们的用户手册中,他们指定这里可能是链接

我尝试了所有方法,但无法在我的服务器上启用 CDR,并且许多方法都不起作用。

请帮我解决这个问题。 我的基本想法是在我的 pdf 阅读器(我从 pdf.js 制作的)上显示 pdf(托管在第 3 方服务器上)。

我通过在 viewer.js 中注释这一行解决了这个问题

if (fileOrigin !== viewerOrigin) {
throw new Error('file origin does not match viewer\'s');
}

并像这样使用代理。 http://192.168.0.101/web/viewer.html?file=https://cors-anywhere.herokuapp.com/pathofpdf.pdf

将您的域/来源添加到HOSTED_VIEWER_ORIGINS数组

我通过在 viewer.js 中添加这一行解决了这个问题

    var LOCAL_AUTO_DETECT_ORIGIN = window.location.origin;

  var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];

  HOSTED_VIEWER_ORIGINS.push(LOCAL_AUTO_DETECT_ORIGIN);

在我的案例中,问题是链接不在 https 中,而该站点是安全的

pdfjs 尊重 CORS 设置。 请执行下列操作

  1. Go 到 viewer.js 文件并找到 HOSTED_VIEWER_ORIGINS 的位置。 在该行下方,将您的域添加到数组 HOSTED_VIEWER_ORIGINS 中,如下所示
    const LOCAL_AUTO_DETECT_ORIGIN = window.location.origin;
    HOSTED_VIEWER_ORIGINS.push(LOCAL_AUTO_DETECT_ORIGIN);
  1. 如果您的文件托管在 AWS S3 存储桶中,则在存储桶上设置 CORS 策略以允许您的所有域从该存储桶读取文件

那应该可以解决您的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM