相关疑难解决方法(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在客户端将base64字符串另存为PDF

所以这里我的问题:我有一个pdf文件作为我从服务器获得的base64字符串.我想使用此字符串直接将PDF显示到浏览器,或者在单击链接时为其选择"另存为...".这里是我使用的代码:

<!doctype>
<html>
<head>
   <title>jsPDF</title>
   <script type="text/javascript" src="../libs/base64.js"></script>
   <script type="text/javascript" src="../libs/sprintf.js"></script>
   <script type="text/javascript" src="../jspdf.js"></script>

       <script type="text/javascript">

        function demo1() {
            jsPDF.init();
            jsPDF.addPage();
            jsPDF.text(20, 20, 'Hello world!');
            jsPDF.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');

            // Making Data URI
            var out = jsPDF.output();
            var url = 'data:application/pdf;base64,' + Base64.encode(out);

            document.location.href = url;
         }
    </script>
</head>
<body>

<a href="javascript:demo1()">Run Code</a>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

它与Chrome和Safari配合使用.Firefox确实识别pdf但不显示它,因为FF要求存在扩展,但数据uri在这种情况下没有.我坚持这里的原因,如果chrome和safari得到它的工作,那么必须有FF和IE的解决方案

我知道有一些相关的问题,但不是真正的一个,现在也有点旧.我知道一个解决方法是在服务器端生成pdf,但我想在客户端生成它.

那么请聪明的人,是否有可能通过一些黑客或额外的JS下载插件?

javascript pdf firefox base64 internet-explorer

34
推荐指数
5
解决办法
9万
查看次数

从arraybuffer显示pdf

我从此代码返回laravel dompdf的流数据

 $pdf = \App::make('dompdf.wrapper');
 $pdf->loadHTML("<div>This is test</div>");
 return $pdf->stream();
Run Code Online (Sandbox Code Playgroud)

这是我的JS ajax代码

    $.ajax({
        type:"GET",
        url: "/display",
        responseType: 'arraybuffer'
    }).done(function( response ) {
        var blob = new Blob([response.data], {type: 'application/pdf'});
        var pdfurl = window.URL.createObjectURL(blob)+"#view=FitW";
        $("#pdfviewer").attr("data",pdfurl);
    });
Run Code Online (Sandbox Code Playgroud)

这是在ajax之后显示pdf的HTML

<object id="pdfviewer" data="/files/sample.pdf" type="application/pdf" style="width:100%;height:500px;"></object>
Run Code Online (Sandbox Code Playgroud)

我收到了以下错误

无法加载PDF文档

请帮忙解决这个问题.如何显示pdf文件.

javascript php jquery dompdf laravel

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

chrome pdf 查看器下载 html5 blob - 网络失败错误

我们正在 Chrome 浏览器上将 PDF 作为 blob 加载,使用 Chrome pdf 查看器插件显示文档。

当我们尝试使用工具栏上提供的图标下载 pdf 时,会显示网络失败错误。请看下面的截图在此输入图像描述

请帮忙。

google-chrome pdf-viewer pdf.js

6
推荐指数
1
解决办法
3312
查看次数