所以我使用优秀的pdf.js工具,效果很好。但是,我想将一个包含来自Amazon S3的PDF文件流的响应对象传递给pdf.js的查看器。
在演示中,我看到它的调用方式如下:
=/pdf/web/viewer.html?file=%2FmypdfFile.pdf
但是,查看viewer.html或pdf.js或其任何文件,我无法看到它在哪里使用在URL上传递的?file参数。我想将其替换为可以将响应项传递给它的内容,它会加载viewer.html。
我想做这样的事情:
(伪代码sorta)
request = S3.GetObjectRequest(bucket, key);
using GetObjectResponse response - client.getobject(request);
openPDFViewer (response);
可行吗?响应将包含该文件,即我可以说
response.WriteResponseToFile("c:\mypdf.pdf")
我把文件拿出来了。
答案 0 :(得分:0)
IIRC S3文件具有URL引用,因此您无需预先加载'服务器端的pdf。只需渲染URL以使文件= [urlencoded path to s3 file]
答案 1 :(得分:0)
我无法看到它在哪里使用?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