如何在HTML中显示PDF文件?

我有一个自动生成的PDF文件itext,我需要在HTML中显示该PDF文件。我的问题是:如何使用pdf.js在HTML中显示本地PDF文件?PDF文件是否应该按照某些标准生成?

936724 次浏览

如果你想使用pdf.js,我建议你阅读

你也可以把你的pdf文件上传到某个地方(比如谷歌Drive),并在iframe中使用它的URL

<object data="data/test.pdf" type="application/pdf" width="300" height="200">
<a href="data/test.pdf">test.pdf</a>
</object>

在HTML网页中实现PDF文件非常简单。

<embed src="file_name.pdf" width="800px" height="2100px" />
请确保根据您的需要更改宽度和高度。 好运!< / p >

我使用谷歌Docs嵌入式PDF查看器。这些文档不必上传到谷歌docs,但必须在网上可用。

<iframe src="https://docs.google.com/gview?url=https://path.com/to/your/pdf.pdf&embedded=true" style="width:600px; height:500px;" frameborder="0"></iframe>

在html页面的pc很容易实现

<embed src="study/sample.pdf" type="application/pdf"   height="300px" width="100%">

但PDF显示在移动的这段代码是不可能的,你必须需要一个插件

如果你没有响应你的网站。然后上面的代码pdf不显示在手机上,但你可以把下载选项后的代码

<embed src="study/sample.pdf" type="application/pdf"   height="300px" width="100%" class="responsive">
<a href="study/sample.pdf">download</a>

您可以像这样轻松地在HTML页面中显示

<embed src="path_of_your_pdf/your_pdf_file.pdf" type="application/pdf"   height="700px" width="500">

便携式文档格式(<强> PDF < / >强)。

  • 任何浏览器«使用嵌入式谷歌文档查看器将PDF文件嵌入到iframe

    <iframe src="http://docs.google.com/gview?
    url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true"
    style="width:600px; height:500px;" frameborder="0">
    </iframe>
    
  • 仅适用于chrome浏览器«chrome PDF查看器使用插件。pluginspage=http://www.adobe.com/products/acrobat/readstep2.html

    <embed type="application/pdf"
    src="http://www.oracle.com/events/global/en/java-outreach/resources/java-a-beginners-guide-1720064.pdf"
    width="100%" height="500" alt="pdf" pluginspage="http://www.adobe.com/products/acrobat/readstep2.html"
    background-color="0xFF525659" top-toolbar-height="56" full-frame="" internalinstanceid="21"
    title="CHROME">
    

示例小片:

<html>
<head></head>
<body style=" height: 100%;">
<div style=" position: relative;">
<div style="width: 100%; /*overflow: auto;*/ position: relative;height: auto; margin-top: 70px;">
<p>An
<a href="https://en.wikipedia.org/wiki/Image_file_formats" >image</a> is an artifact that depicts visual perception
</p>
<!-- To make div with scroll data [max-height: 500;]-->
<div style="/* overflow: scroll; */ max-height: 500; float: left; width: 49%; height: 100%; ">
<img width="" height="400" src="https://peach.blender.org/wp-content/uploads/poster_bunny_bunnysize.jpg?x11217" title="Google" style="-webkit-user-select: none;background-position: 0px 0px, 10px 10px;background-size: 20px 20px;background-image:linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee 100%),linear-gradient(45deg, #eee 25%, white 25%, white 75%, #eee 75%, #eee 100%);cursor: zoom-in;" />
<p>Streaming an Image form Response Stream (binary data) «  This buffers the output in smaller chunks of data rather than sending the entire image as a single block.
<a href="http://www.chestysoft.com/imagefile/streaming.asp" >StreamToBrowser</a>
</p>
</div>
<div style="float: left; width: 10%; background-color: red;"></div>
<div style="float: left;width: 49%; ">
<img width="" height="400" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot"/>
<p>Streaming an Image form Base64 String « embedding images directly into your HTML.
<a href="https://en.wikipedia.org/wiki/Data_URI_scheme">
<sup>Data URI scheme</sup>
</a>
<a href="https://codebeautify.org/image-to-base64-converter">
<sup>, Convert Your Image to Base64</sup>
</a>
<pre>data:[&lt;media type&gt;][;base64],&lt;data&gt;</pre>
</p>
</div>
</div>
<div style="width: 100%;overflow: auto;position: relative;height: auto; margin-top: 70px;">
<video style="height: 500px;width: 100%;" name="media" controls="controls">
<!-- autoplay -->
<source src="http://download.blender.org/peach/trailer/trailer_400p.ogg" type="video/mp4">
<source src="http://download.blender.org/peach/trailer/trailer_400p.ogg" type="video/ogg">
</video>
<p>Video courtesy of
<a href="https://www.bigbuckbunny.org/" >Big Buck Bunny</a>.
</p>
<div>
<div style="width: 100%;overflow: auto;position: relative;height: auto; margin-top: 70px;">
<p>Portable Document Format
<a href="https://acrobat.adobe.com/us/en/acrobat/about-adobe-pdf.html?promoid=CW7625ZK&mv=other" >(PDF)</a>.
</p>
<div style="float: left;width: 49%; overflow: auto;position: relative;height: auto;">
<embed type="application/pdf" src="http://www.oracle.com/events/global/en/java-outreach/resources/java-a-beginners-guide-1720064.pdf" width="100%" height="500" alt="pdf" pluginspage="http://www.adobe.com/products/acrobat/readstep2.html" background-color="0xFF525659" top-toolbar-height="56" full-frame="" internalinstanceid="21" title="CHROME">
<p>Chrome PDF viewer
<a href="https://productforums.google.com/forum/#!topic/chrome/MP_1qzVgemo">
<sup>extension</sup>
</a>
<a href="https://chrome.google.com/webstore/detail/surfingkeys/gfbliohnnapiefjpjlpjnehglfpaknnc">
<sup> (surfingkeys)</sup>
</a>
</p>
</div>
<div style="float: left; width: 10%; background-color: red;"></div>
<div style="float: left;width: 49%; ">
<iframe src="https://docs.google.com/gview?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true#:page.7" style="" width="100%" height="500px" allowfullscreen="" webkitallowfullscreen=""></iframe>
<p>Embeddable
<a href="https://googlesystem.blogspot.in/2009/09/embeddable-google-document-viewer.html" >Google</a> Document Viewer. Here's the code I used to embed the PDF file:
<pre>
&lt;iframe
src="http://docs.google.com/gview?
url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true"
style="width:600px; height:500px;" frameborder="0"&gt;&lt;/iframe&gt;
</pre>
</p>
</div>
</div>
</div>
</body>
</html>

我以前有过类似的东西,通常使用标签

<a href="path_of_your_pdf/your_pdf_file.pdf" tabindex="-1"><strong>click here</strong></a>

但是像上面提到的,找到一些其他的方法是很有趣的!

简单的的方法是使用,

<iframe src="pdf-link">
</iframe>

如果它仍然得到下载而不是查看,检查服务器响应头,它应该有,Content-Disposition:Inline而不是,Content-Disposition:Attachment

元素受到所有浏览器的支持,并在HTML文档中定义了一个嵌入对象。

底线:OBJECT是好的,EMBED是旧的。除了IE的PARAM标签之外,如果浏览器不支持OBJECT的引用插件,OBJECT标签之间的任何内容都会被渲染,而且显然,无论内容是否被渲染,它都会被http请求。参考

工作代码:https://www.w3schools.com/code/tryit.asp?filename=G7L8BK6XC0A6

<!DOCTYPE html>
<html>
<body>


<object width="400px" height="400px" data="https://s3.amazonaws.com/dq-blog-files/pandas-cheat-sheet.pdf"></object>
</body>
</html>

1. 浏览器原生HTML内联嵌入:

<embed
src="http://infolab.stanford.edu/pub/papers/google.pdf#toolbar=0&navpanes=0&scrollbar=0"
type="application/pdf"
frameBorder="0"
scrolling="auto"
height="100%"
width="100%"
></embed>
<iframe
src="http://infolab.stanford.edu/pub/papers/google.pdf#toolbar=0&navpanes=0&scrollbar=0"
frameBorder="0"
scrolling="auto"
height="100%"
width="100%"
></iframe>

正方观点:

  • 没有PDF文件大小限制(甚至数百MB)
  • 这是最快的解决方法

缺点:

  • 它不能在移动浏览器上运行

2. 谷歌文档查看器:

<iframe
src="https://drive.google.com/viewerng/viewer?embedded=true&url=http://infolab.stanford.edu/pub/papers/google.pdf#toolbar=0&scrollbar=0"
frameBorder="0"
scrolling="auto"
height="100%"
width="100%"
></iframe>

正方观点:

  • 适用于桌面和移动浏览器

缺点:

  • 25MB文件限制
  • 需要额外的时间下载查看器

3.嵌入PDF的其他解决方案:


重要提示:

请检查X-Frame-Options HTTP响应报头。它应该是SAMEORIGIN。

X-Frame-Options SAMEORIGIN;

你可以使用

<iframe src="your_pdf_file_path" height="100%" width="100%" scrolling="auto"></iframe>

或者,如果你想让它占据整页:

<a href="your_pdf_file_path">Link</a>

我知道你想使用HTMl显示,但你也可以通过指出路径使用php打开PDF文件,浏览器将在几个简单的步骤中呈现它

<?php
$your_file_name = "url_here";


//Content type and this case its a PDF
header("Content-type: application/pdf");


header("Content-Length: " . filesize($your_file_name ));


//Display the file
readfile($your_file_name );
?>

这个方法也很有用:

桌面移动浏览器上显示pdf文件:

<object data="./filename.pdf" type="application/pdf" width="500px" height="600px">
<p>Your web browser doesn't have a PDF plugin.
<a href="./filename.pdf">click here to download the PDF file.</a></p>
</object>

更新- adobepdf嵌入API

Adobe发布了他们的adobepdf嵌入API,完全免费。由于他们自己创建了PDF格式,他们的API可能是最好的。

  • 它提供了最高质量的PDF渲染。
  • 您可以完全自定义用户体验并选择如何显示PDF。
  • 您还可以分析PDF的使用情况,以便了解用户如何与PDF交互,包括在页面和搜索上花费的时间。

你所要做的就是创建一个api_key并在代码片段中使用它。

将PDF显示为缓冲区(例如本地文件)

下面是代码片段的示例,如果您有缓冲区(例如本地文件),您可以将其添加到HTML中,并利用它们的API来显示PDF。

<div id="adobe-dc-view"></div>


<script src="https://documentcloud.adobe.com/view-sdk/main.js"></script>


<script type="text/javascript">
document.addEventListener("adobe_dc_view_sdk.ready", function(){
var adobeDCView = new AdobeDC.View({clientId: "api_key", divId: "adobe-dc-view"});
adobeDCView.previewFile({
content: { promise: <FILE_PROMISE> }
metaData: { fileName: "file_name_to_display" }
}, {});
});
</script>

gofilord提供的答案是正确的,但我还要补充一点,如果你创建了一个空桶来将pdf倒入其中,你应该给它一个src=""喜欢……

<embed id="fooEmbed" src="">

...在HTML和javascript…

document.getElementById('fooEmbed').src = 'bar.pdf';

...它会起作用的。如果你这样做…

<embed id="fooEmbed">

...这是行不通的。