当前位置:  开发笔记 > 编程语言 > 正文

在HTML中嵌入PDF的推荐方法?

如何解决《在HTML中嵌入PDF的推荐方法?》经验,为你挑选了11个好方法。

在HTML中嵌入PDF的推荐方法是什么?

的iFrame?

宾语?

嵌入?

Adobe对此有何看法?

就我而言,PDF是即时生成的,因此在刷新之前无法将其上传到第三方解决方案.



1> lubos hasko..:

可能最好的方法是使用PDF.JS库.它是PDF文档的纯HTML5/JavaScript渲染器,没有任何第三方插件.

在线演示:http: //mozilla.github.com/pdf.js/web/viewer.html

GitHub:https: //github.com/mozilla/pdf.js


pdf.js在Chrome等平板电脑浏览器上效果不佳.对于较大的pdf文档,我也发现它非常非常慢.
如另一个答案所述,scribd实际上使用pdf2swf来转换pdf文件
我不相信这是推荐的.看一下在线演示中的字体渲染,它们看起来很麻烦,很糟糕.在adobe reader中打开时,使用子像素渲染效果会更好.
PDF.js库实际上看起来是一个非常好的解决方案,虽然链接的演示没有显示它嵌入在页面中(它占用了整个页面).但是它使用HMTL5画布,所以它应该很容易嵌入,而且它是*快*.在不利的方面,它需要一些js,不像``:https://github.com/mozilla/pdf.js/blob/master/examples/helloworld/hello.js
我强烈建议不要使用scribd - 我刚刚对特定文档进行了实验,而在firefox 4中它只显示前3页,而在IE9中它的渲染文本错误 - 它偏移了页面的某些部分.从技术上讲,它是错误的.此外,他们希望您订阅打印或下载文档!基本上他们正在获取以前免费的文件并在他们周围架设付费墙.
我已经测试了Pdf.js并且只有惊喜,@ [Rocco The Tacco]对于大型pdf你可以逐页加载,也适用于移动浏览器我认为建议使用兼容性组件; 现在唯一的缩小是与IE8等旧浏览器的兼容性,我唯一的解决方案是显示一个对象和一个嵌入.
使用PDF.js与之间的最终结果有何不同?
我正在使用PDF.js和TCPDF条形码来创建PDF格式的QRCode并在网站上显示为图像.它比之前使用google qrcode生成器快得多,生成时间差不多一分钟.

2> Batfan..:

这是快速,简单的,不需要任何第三方脚本:

';
?>

如果您需要快速解决方案,希望避免跨浏览器PDF查看问题,以及PDF只是一两页,这是一个不错的选择.当然,您需要在Web服务器上安装ImageMagick(这反过来需要Ghostscript),这是在共享托管环境中可能无法使用的选项.还有一个PHP插件(称为imagick)就像这样工作,但它有自己的特殊要求.


但你能以编程方式做到吗?

7> 小智..:

查看此代码 - 将PDF嵌入HTML中



    shree 


这似乎不起作用.我总是以灰色屏幕而不是pdf结束.但是,在@Gayle的回答中,切换`src`为`data`确实有效.

8> Adam Davis..:

FDView将PDF2SWF(它本身基于xpdf)与SWF查看器结合在一起,因此您可以在服务器上即时转换和嵌入PDF文档.

xpdf不是一个完美的PDF转换器.如果您需要更好的结果,那么Ghostview可以将PDF文档转换为其他格式,您可以更轻松地为其构建Flash查看器.

但对于简单的PDF文档,FDView应该可以很好地工作.



9> George Mahar..:

我们的问题是,出于法律原因,我们不允许在硬盘上临时存储PDF.此外,在浏览器中将PDF显示为"预览"时,不应重新加载整个页面.

首先我们尝试了PDF.jS. 它适用于Firefox和Chrome浏览器中的Base64.但是,我们的PDF格式慢得令人无法接受.IE/Edge根本不起作用.

因此,我们在HTML对象标记中使用Base64字符串进行了尝试.这再次对IE/Edge不起作用(可能与PDF.js相同).在Chrome/Firefox/Safari中再次没问题.这就是我们选择混合解决方案的原因.IE/Edge我们使用IFrame和所有其他浏览器使用object-tag.

IFrame解决方案当然也适用于Chrome和co.我们之前没有将此解决方案用于Chrome的原因是,尽管PDF正确显示,但只要您在预览中点击"下载",Chrome就会向服务器发出新请求.由于PDF显示在IFrame中,因此不再设置所需的隐藏字段pdfHelperTransferData(用于发送PDF生成所需的表单数据).对于此功能/错误,Chrome会在下载PDF时发送两个请求(并取消其中一个请求).

现在问题儿童IE9和IE10仍然存在.对于这些,我们放弃了预览解决方案,只需通过单击预览按钮向用户下载(而不是预览)来发送文档.我们已经尝试了很多,但即使我们找到了解决方案,这个小部分用户的额外努力也不值得付出努力.您可以在此处找到我们的下载解决方案:使用IFrame下载PDF而无需刷新.

我们的Javascript

var transferData = getFormAsJson()
if (isMicrosoftBrowser()) {
        // Case IE / Edge (because doesn't recoginzie Pdf-Base64 use Iframe)
        var form = document.getElementById('pdf-helper-form');
        $("#pdfHelperTransferData").val(transferData);
        form.target = "iframe-pdf-shower";
        form.action = "serverSideFunctonWhichWritesPdfinResponse";
        form.submit();
 } else {
        // Case non IE use Object tag instead of iframe
        $.ajax({
            url: "serverSideFunctonWhichRetrivesPdfAsBase64",
            type: "post",
            data: { downloadHelperTransferData: transferData },
            success: function (result) {
                $("#object-pdf-shower").attr("data", result);
            }
        })
 }

我们的HTML

要检查IE/Edge的浏览器类型,请参阅此处:如何使用JavaScript检测Internet Explorer(IE)和Microsoft Edge?我希望这些发现可以节省别人的时间.



10> Said Bouighe..:

    创建一个容器来保存PDF

    告诉PDFObject要嵌入哪些PDF,以及嵌入它的位置

    
    
    

    您可以选择使用CSS指定视觉样式,包括尺寸,边框,边距等.

    
    

来源:https://pdfobject.com/



11> 小智..:

Scribd不再要求您在其服务器上托管您的文档.如果您使用这些帐户创建帐户,则会获得发布商ID.只需几行JavaScript代码即可加载存储在您自己的服务器上的PDF文件.

有关详细信息,请参阅开发者工具.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有