相关疑难解决方法(0)

如何使用javascript从Web服务返回的二进制字符串构建PDF文件

我试图从二进制流构建一个PDF文件,我收到它作为Ajax请求的响应.

通过XmlHttpRequest我收到以下数据:

%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试的是通过嵌入我的数据data:uri.现在,它没有任何问题,它工作正常.不幸的是,它在IE9和Firefox中不起作用.可能的原因可能是FF和IE9在使用时遇到了问题data-uri.

现在,我正在寻找适用于所有浏览器的解决方案.这是我的代码:

// responseText encoding 
pdfText = $.base64.decode($.trim(pdfText));

// Now pdfText contains %PDF-1.4 ...... data...... %%EOF

var winlogicalname = "detailPDF";
var winparams = 'dependent=yes,locationbar=no,scrollbars=yes,menubar=yes,'+
            'resizable,screenX=50,screenY=50,width=850,height=1050';

var htmlText = '<embed width=100% height=100%'
                     + ' type="application/pdf"'
                     + ' src="data:application/pdf,'
                     + escape(pdfText)
                     + '"></embed>'; 

                // Open PDF in new browser window
                var detailWindow = window.open ("", winlogicalname, winparams);
                detailWindow.document.write(htmlText);
                detailWindow.document.close();
Run Code Online (Sandbox Code Playgroud)

正如我所说,它适用于Opera和Chrome(Safari尚未经过测试).使用IE或FF将显示一个空白的新窗口.

是否有任何解决方案,如在文件系统上构建PDF文件,以便让用户下载它?我需要适用于所有浏览器的解决方案,至少在IE,FF,Opera,Chrome和Safari中.

我无权编辑Web服务实现.所以它必须是客户端的解决方案.有任何想法吗?

javascript pdf jquery cross-browser binary-data

46
推荐指数
4
解决办法
9万
查看次数

使用javascript下载时,PDF为空白

我有一个Web服务,在其响应中返回PDF文件内容.我想在用户点击链接时将其下载为pdf文件.我在UI中编写的javascript代码如下:

$http.get('http://MyPdfFileAPIstreamURl').then(function(response){
var blob=new File([response],'myBill.pdf',{type: "text/pdf"});
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="myBill.pdf";
link.click();
});
Run Code Online (Sandbox Code Playgroud)

'response'包含来自'MyPdfFileAPIstreamURl'的servlet输出流的PDF字节数组.并且流也未加密.

因此,当我点击链接时,PDF文件成功下载大小约为200KB.但是当我打开这个文件时,它会打开空白页面.下载的pdf文件的起始内容位于图像中.

我无法理解这里有什么问题.救命 !

这是下载的pdf文件的起始内容:

这是下载的pdf文件的起始内容

javascript pdf

15
推荐指数
3
解决办法
2万
查看次数

新标签页中的Base64 PDF在刷新前显示空白页

标题说这一切真的......我有一个base64 pdf字符串,我追加到: data:application/pdf;base64,

使用我的网页中的链接将pdf带入新标签页.最初会显示一个空白页面,但随后我刷新页面并显示完美.

这个问题才开始,一旦我更改了我的NodeJS代码以检索PDF,在用https模块检索PDF 但现在我正在使用之前request.

https://jsfiddle.net/o7upp4d8/

html javascript google-chrome data-url chromium

14
推荐指数
1
解决办法
2147
查看次数

使用PDFObject嵌入Blob

我正在使用:https : //pdfobject.com/

pdf在我的Web应用程序上显示嵌入式文件。但是我不能渲染从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");
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

但是,嵌入容器在我的浏览器中什么也不显示。我正在使用Chrome 51.0.2704.103 m

html javascript pdf pdfobject

2
推荐指数
1
解决办法
1万
查看次数