【问题标题】:PDF stream to PDF.js - not PDF urlPDF 流到 PDF.js - 不是 PDF url
【发布时间】:2016-04-02 02:05:35
【问题描述】:

我正在服务器上动态生成 PDF 以响应从 ajax 请求收到的参数。我需要在 ajax 中处理响应并将 PDF 作为数据对象传递给 PDF.js。

我不想将这些 PDF 写入服务器 - 我宁愿有一个干净的进程来返回 PDF 流

我使用 filereader 成功完成了类似的操作 - 将本地 PDF 作为 ArrayBuffer 加载到浏览器中的 PDF.js 中。

responseType 是“application/pdf”,原始 PDF 正在返回,但我似乎无法将其转换为 PDF.js 的 ArrayBuffer

var responseText = src
var len = responseText.length
console.log(len);


var buf = new ArrayBuffer(len);
console.log(buf);


var bufView = new Uint8Array(buf);
console.log(bufView);


for (var i=0; i < len; i++) {
    bufView[i] = responseText.charCodeAt(i);
}
console.log(bufView);

var docInitParams = { data: bufView};

PDFJS.getDocument(docInitParams).then(function(pdf) {......

这是上面代码的输出

【问题讨论】:

  • 你可以做var docInitParams = {data: responseText};(见github.com/mozilla/pdf.js/blob/master/src/display/api.js#L379)你的解决方案也应该工作,所以我认为你的responseText包含损坏的数据。
  • 在将 PDF 数据提供给 PDF.js window.crypto.subtle.digest("SHA-1", bufView).then(function (d) { console.log(new Uint8Array(d)); }) 之前以及在将其作为流发送之前(在服务器上您可以执行例如 openssl sha1 test.pdf),也尝试输出 sha1 跨度>
  • 哎呀 - 不喜欢那样.....TypeError: undefined is not an object (evalating 'window.crypto.subtle.digest')
  • 我注意到它确实会加载 PDF 并调整画布大小以适应页面大小,但不会呈现它并给出 - 警告:不支持的功能“未知”
  • 如果我使用 url 将 PDF 加载到 php 脚本,那么它可以很好地呈现 PDF,但是如果我尝试通过 data:src 方法从同一个 php 脚本中传递 ajax responseText 它会抛出上面的警告。

标签: pdf.js


【解决方案1】:

我也遇到了类似的问题,直接传数据成功了(通过data:// URL),但是我不得不修改源代码;你可以看到我的更改here

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 2014-01-24
    • 1970-01-01
    • 2021-03-13
    • 2012-08-19
    • 2021-03-27
    • 2016-09-19
    • 2013-01-02
    • 1970-01-01
    相关资源
    最近更新 更多