内联PDF查看器

时间:2011-04-07 19:47:06

标签: html ruby pdf

是否有PDF查看器可以嵌入到我的HTML中,我可以根据需要进行样式设计。

实际上我需要显示一些PDF文件页面并自定义我自己的UI(几个按钮来翻页和评论)。

如果有任何Ruby解决方案(实际上并不是关于编程,据我所知),它会很棒。

我想显示pdf,因为:

  • 用户可以复制文字
  • 文字采用原始布局

所以我不希望将其显示为图像或转换后的文本。但我想用简单的设计来展示页面。没有Flex或其他什么。

7 个答案:

答案 0 :(得分:13)

是的,有可能,HTML5!

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

这是一个纯JavaScript库,它使用HTML5函数打开PDF文件并在页面中呈现它。 我在以下浏览器中成功测试了该库:

  • IE9和当前版本的Google Chrome,Firefox,Safari
  • IE8及更低版本不支持pdf.js(缺少HTML5功能)

<强>用法

在HTML文件中包含javascript库并添加-element(是HTML5元素,因此它仅适用于HTML5浏览器):

<body>
  <canvas id="the-canvas" style="border:1px solid black;"/>
</body>

使用与此类似的javascript调用在此画布中呈现PDF:

PDFJS.getDocument('your-file-goes-here.pdf').then(function(pdf) {
  pdf.getPage(1).then(function(page) {
    var scale = 1.5;
    var viewport = page.getViewport(scale);

    var canvas = document.getElementById('the-canvas');
    var context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;

    var renderContext = {
      canvasContext: context,
      viewport: viewport
    };
    page.render(renderContext);
  });
});

答案 1 :(得分:4)

除了一些内置PDF查看器的浏览器(Chrome会想到),PDF显示由外部插件处理,您无法控制。除了通过iframe之外,您无法将PDF嵌入到页面中,即使这样,它也是来自浏览器的完全外部应用程序,并且不受CSS样式规则的限制。

我没有看到Ruby与此有什么关系,因为那是一个服务器端操作,而你正在谈论客户端准备。您可以使用Ruby(或大多数其他语言)来提取PDF的文本,但您明确表示您不想这样做。

答案 2 :(得分:3)

与你问的最接近的是Google Doc Viewer。它至少不需要JavaScript。

答案 3 :(得分:2)

您也可以将PDF转换为HTML5并使用IDRSolutions的PDF2HTML5产品显示这些页面。输出可以放在您自己的CMS中,您可以添加自己的GUI,也可以使用现有选项。您可以查看free converter上的潜在输出并根据需要对其进行试用,它是一个100%的Java库,尽管这可能是也可能不是问题。

注意:为了透明起见,值得一提的是我目前是该产品的开发人员,所以我非常熟悉它的功能。

值得注意的是,pdf.js并不总是与实际的pdf完全匹配,但很难获得完全匹配并且仍然保留一些您想要的关键功能。但是在大多数情况下它确实做得很好。

答案 4 :(得分:1)

我所知道的唯一可以帮助你做到这一点的是Adobe Flashpaper(可能有开源替代品吗?不确定)。

这里的例子:

答案 5 :(得分:1)

  • 考虑到兼容性,最好使用真正的adobe软件来渲染pdf。第三方渲染器大部分时间都在工作,但偶尔会遇到格式化方面的问题。您可以从adobe网站下载pdf阅读器,在Web浏览器上进行简单设置,并让浏览器使用正版pdf渲染器打开pdf文件。至少在Firefox上,你可以做到这一点。

  • 如果要在不使用Web浏览器的情况下逐步显示pdf文件,则意味着您需要一个可与pdf渲染器配合使用的GUI工具包。我所知道的是 ruby​​ / gnome2 上的 poppler 。我曾经能够将它与ruby 1.8一起使用,但由于我已经转移到ruby 1.9,我还没有尝试过。其他用于ruby的标准GUI工具包是 wxruby fxruby ruby​​ / qt 等,但我是不确定哪一个有pdf渲染器。

对不起,如果没有帮助。

答案 6 :(得分:0)

无需外部库。许多浏览器都支持多种方式来查看pdfs。喜欢对象,iframe,嵌入。你可以使用一个带有iframe后备的对象,这个对象可以在下载时回退:

<object data="/pdf/sample-3pp.pdf#page=2" type="application/pdf" height="100%" width="100%">
<iframe src="/pdf/sample-3pp.pdf#page=2" style="border: none;" height="100%" width="100%">
This browser does not support PDFs. Please download the PDF to view it: <a href="/pdf/sample-3pp.pdf">Download PDF</a>
</iframe>
</object>

Source