【问题标题】:pdf.js how to pass a file response object in c#pdf.js如何在c#中传递文件响应对象
【发布时间】:2014-07-23 03:50:19
【问题描述】:

所以我正在使用出色的 pdf.js 工具,它运行良好。但是,我想将包含来自 Amazon S3 的 PDF 文件流的响应对象传递给 pdf.js 的查看器。

在演示中我看到它这样称呼它:

=/pdf/web/viewer.html?file=%2FmypdfFile.pdf

但是,查看 viewer.html 或 pdf.js 或其任何文件时,我无法看到它到底在哪里使用在 URL 上传递的 ?file 参数。我想用可以将它传递给响应项的东西替换它,它会加载 viewer.html。

我想做这样的事情:

(伪代码排序)

    request = S3.GetObjectRequest(bucket, key);
    using GetObjectResponse response - client.getobject(request);
    openPDFViewer (response);

这可行吗?响应将包含该文件,即我可以说

response.WriteResponseToFile("c:\mypdf.pdf") 

然后我把文件拿出来。

【问题讨论】:

    标签: c# asp.net-mvc amazon-web-services pdf.js


    【解决方案1】:

    IIRC S3 文件具有 URL 引用,因此您不必在服务器端“预加载”pdf。只需渲染 URL 即可获得 file=[urlencoded path to s3 file]

    【讨论】:

    • 好吧,出于其他原因(安全问题),我需要将它们放在服务器上。所以我必须这样做......
    • 那么我认为如果要使用该 js 库,唯一的选择是将其下载到服务器并将其保存到公开公开 PDF 文件的本地文件夹路径。如果这违反了您的安全问题,那么我认为您将无法使用 js 渲染库,甚至无法在这种情况下使用 pdf。我认为 PDF 必须呈现客户端,这意味着客户端将能够访问 PDF 文件。
    • 如果您对访问 PDF 的用户存在安全问题,那么您必须使用本文中提到的工具:stackoverflow.com/questions/8840634/… 使用该工具然后重新渲染它输出到 HTML ......类似的东西。
    【解决方案2】:

    我看不到它到底在哪里使用 ?file 参数 在 URL 上传递。我想用我可以的东西替换它 向它传递一个响应项,它将加载 viewer.html。

    如果你查看 viewer.js,有这个 pdfViewOpen 方法具有以下参数:- pdfViewOpen(url, id, scale, password,pdfDataRangeTransport, args) 您在 file= 之后传递的字符串 url 作为此方法的 url 参数传入。您可以在该方法内部更改您想用它做什么。 从那里您可能想查看 pdf.js 文件的 PDFJS.getDocument() 方法,接下来是 fetchDocument 方法,由 messageHandler 处理。

    如果你想自己处理这一切,你可以先拦截它。已经有几个关于 SO 的例子。这是一个链接:- How to get byte-array data from servlet to pdf.js

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 2021-11-22
      • 2017-11-03
      相关资源
      最近更新 更多