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


当前回答

我知道你想使用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.js,我建议你阅读这个

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

or

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

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>

Pro:

没有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>

Pro:

适用于桌面和移动浏览器

缺点:

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


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

https://mozilla.github.io/pdf.js https://pdfobject.com https://viewerjs.org


重要提示:

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

X-Frame-Options SAMEORIGIN;

更新- 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">

...这是行不通的。

这个方法也很有用:

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

<object data="./filename.pdf" type="application/pdf" width="500px" height="600px"> <p>你的浏览器没有PDF插件。 <a href="./filename.pdf">点击这里下载PDF文件</a></p> . PDF < /对象>