以下内容适用于Chrome,但在Firefox 15和IE 9中iframe内容为空.
<html> <head></head> <body> <p>this n that</p> <iframe type="application/pdf" width="95%" height="95%" src="data:application/pdf;base64,<?php echo base64_encode(file_get_contents('memlist.pdf'));?>"> Oops,you have no support for iframes. </iframe> <p>this n that</p> </body> </html>
问题似乎是数据.如果我将其更改为src =“memlist.pdf”,那么它无处不在. PDF大小为75kb.
dataurls是否存在某些(当前)浏览器限制?
(我试图避免使用http url回调服务器,因为一些身份验证并发症)
我刚刚逐字复制了你的源代码,交换了php输出编码的pdf的部分,这是我从在线编码器返回的字符串.
原始pdf是141kb,编码的字符串是194,065字节 – 所以非常大的网址.
它在Chrome中运行得很好,就像它对你一样.同样,Opera也没有它的标准.
因此,我从iframe标记中删除了type =’application / pdf’属性.现在Chrome和Opera都会显示文件,而IE9仍然会拒绝.
我尝试通过javascript更改src(以防万一),通过Opera / Chrome没有问题,但仍然没有使用IE浏览器.
在过去,我已经使用php创建了pdfs,只需将iframe的src设置为php文件的url,完成GET参数. IE6(以及Opera,chrome和ff – 在移动设备上从未尝试过它,它已经超过5年了)
我希望一些旧的示例代码可以帮助:
(1)Javascript插入iframe
function showPdfTt(studentId) { var url,tgt; title = byId("popupTitle"); title.innerHTML = "Timetable for " + studentId; tgt = byId("popupContent"); url = "pdftimetable.php?"; url += "id="+studentId; url += "&type=Student"; tgt.innerHTML = "<iframe onload=\"centerElem(byId('box'))\" src='"+url+"' width=\"700px\" height=\"500px\"></iframe>"; }
pdfTimetable.php的输出部分
$pdfStr = $pdf->output(); $myFile = fopen("lastRequested.pdf","wb"); // just here for debugging purposes fwrite($myFile,$pdfStr); fclose($myFile); $pdf->ezStream(); // send output to stdout (the browser) - uses fpdf for generation exit;
fpdf的输出部分
if(php_sapi_name()!='cli') { //We send to a browser header('Content-Type: application/pdf'); if(headers_sent()) $this->Error('Some data has already been output,can\'t send PDF file'); header('Content-Length: '.strlen($this->buffer)); header('Content-Disposition: inline; filename="'.$name.'"'); header('Cache-Control: private,max-age=0,must-revalidate'); header('Pragma: public'); ini_set('zlib.output_compression','0'); } echo $this->buffer; break;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。