我正在使用:https://pdfobject.com/
在我的网络应用中显示嵌入式pdf
文件。但是,我无法呈现从pdf
创建的blob
。
这是我尝试过的:
var arrayBufferView = new Uint8Array(response.Body.data);
var file = new Blob([arrayBufferView], {
type: response.ContentType
});
var url = window.URL.createObjectURL(file)
PDFObject.embed(url, "#my-container");
在html上获取这个结果:
<div id="my-container" class="ng-scope pdfobject-container">
<embed class="pdfobject" src="blob:http%3A//localhost%3A4000/869a8d9a-7eaa-48dd-99aa-49bf299114aa" type="application/pdf" style="overflow: auto; width: 100%; height: 100%;" internalinstanceid="88">
</div>
然而,嵌入容器在浏览器中不显示任何内容。我使用的是Chrome 51.0.2704.103 m
答案 0 :(得分:5)
尝试使用<iframe>
元素,请求资源Blob
HTML
<div id="my-container" class="ng-scope pdfobject-container">
<iframe src="" type="application/pdf" width="100%" height="100%" style="overflow: auto;">
</iframe>
</div>
的javascript
var xhr = new XMLHttpRequest();
// load `document` from `cache`
xhr.open("GET", "/path/to/file.pdf", true);
xhr.responseType = "blob";
xhr.onload = function (e) {
if (this.status === 200) {
// `blob` response
console.log(this.response);
var file = window.URL.createObjectURL(this.response);
document.querySelector("iframe").src = file;
}
};
xhr.send();
答案 1 :(得分:1)
这就是我相信您正在寻找的东西。
function previewPdf(billName) {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'home/download?pdfBillId=' + billName, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
if (this.status == 200) {
var file = new Blob([this.response], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
var viewer = $('#viewpdf');
PDFObject.embed(fileURL, viewer);
}
};
xhr.send();
}
答案 2 :(得分:1)
仅是使用iframe的答案的补充,我们还需要对此使用pdfjs查看器,否则它将下载。
<div id="my-container" class="PDFObject-container">
<iframe src="/pdfjs/web/viewer.html?file=blob:http://xxx:8098/fsadfsaf" type="application/pdf" width="1000" height="600" style="overflow: auto;">
</iframe>
</div>
blob是通过使用Javascript创建的二进制响应创建的
const url = window.URL.createObjectURL(new Blob([response], { type: 'application/pdf' }));
我确实希望PDFObject可以在不使用iframe的情况下完成工作,但是经测试,这不会成功。
答案 3 :(得分:0)
而不是使用:
var url = window.URL.createObjectURL(file)
尝试使用:
var url = window.URL.createObjectURL(file, { type: 'application/pdf' })