如何使用 JavaScript 显示从 S3 获取的 PDF?
How to display PDFs fetched from S3 using JavaScript?
我需要从 s3.amazonaws.com 获取一个 PDF 文件,当我使用 Postman 查询它(或直接粘贴到浏览器中)时,它可以正常加载。但是,当我尝试为其生成文件路径(稍后传递给查看器)时,它不起作用:
fetch(<S3URL>).then(res => res.blob()).then(blob => {
// THIS STEP DOES NOT WORK
let myBlob = new Blob(blob, {type: 'application/pdf'});
// expect something like 'www.mysite.com/my-file.pdf'
let PDFLink = window.URL.createObjectURL(myBlob);
return PDFLink;
}
我使用的是 Autodesk 的 Forge PDF 查看器,它非常适合本地 PDF 文件:
let myPDFLink = 'public/my-file.pdf';
Autodesk.Viewing.Initializer(options, () => {
viewer = new Autodesk.Viewing.Private.GuiViewer3D(document.getElementById('forgeViewer'));
viewer.start();
viewer.loadExtension('Autodesk.PDF').then( () => {
viewer.loadModel(myPDFLink, viewer); // <-- works fine here
});
});
// from https://github.com/wallabyway/offline-pdf-markup
那么,我如何从 S3 URL(例如 s3.amazonaws.com/com.autodesk.oss-persistent/0d/ff/c4/2dfd1860d1...
)转到 PDF 查看器可以理解的内容(即在 URL 中具有 .pdf
扩展名) )?
我知道对于 JSON 文件我需要执行 res.json()
来提取 JSON 内容,但是对于 PDF,我应该如何处理 res
对象?
注意:我无法控制 S3 URL。每当我想从他们的 BIM360 门户下载文档时,Autodesk 都会生成一个临时 S3 link。
我尝试了很多选项,我可以显示通过 API 调用 获取的 PDF 的唯一方法是使用对象元素:
<object data='<PDF link>' type='application/pdf'>
无法将下载的 blob 转换为 base64。将 PDF link 放在 iframe 中也不起作用(它仍然下载而不是显示)。如果 PDF 是前端应用程序的一部分(即本地文件,而不是从远程服务器获取的文件),我读过的所有选项仅适用。
我需要从 s3.amazonaws.com 获取一个 PDF 文件,当我使用 Postman 查询它(或直接粘贴到浏览器中)时,它可以正常加载。但是,当我尝试为其生成文件路径(稍后传递给查看器)时,它不起作用:
fetch(<S3URL>).then(res => res.blob()).then(blob => {
// THIS STEP DOES NOT WORK
let myBlob = new Blob(blob, {type: 'application/pdf'});
// expect something like 'www.mysite.com/my-file.pdf'
let PDFLink = window.URL.createObjectURL(myBlob);
return PDFLink;
}
我使用的是 Autodesk 的 Forge PDF 查看器,它非常适合本地 PDF 文件:
let myPDFLink = 'public/my-file.pdf';
Autodesk.Viewing.Initializer(options, () => {
viewer = new Autodesk.Viewing.Private.GuiViewer3D(document.getElementById('forgeViewer'));
viewer.start();
viewer.loadExtension('Autodesk.PDF').then( () => {
viewer.loadModel(myPDFLink, viewer); // <-- works fine here
});
});
// from https://github.com/wallabyway/offline-pdf-markup
那么,我如何从 S3 URL(例如 s3.amazonaws.com/com.autodesk.oss-persistent/0d/ff/c4/2dfd1860d1...
)转到 PDF 查看器可以理解的内容(即在 URL 中具有 .pdf
扩展名) )?
我知道对于 JSON 文件我需要执行 res.json()
来提取 JSON 内容,但是对于 PDF,我应该如何处理 res
对象?
注意:我无法控制 S3 URL。每当我想从他们的 BIM360 门户下载文档时,Autodesk 都会生成一个临时 S3 link。
我尝试了很多选项,我可以显示通过 API 调用 获取的 PDF 的唯一方法是使用对象元素:
<object data='<PDF link>' type='application/pdf'>
无法将下载的 blob 转换为 base64。将 PDF link 放在 iframe 中也不起作用(它仍然下载而不是显示)。如果 PDF 是前端应用程序的一部分(即本地文件,而不是从远程服务器获取的文件),我读过的所有选项仅适用。