内联PDF查看器



是否有PDF查看器,我可以嵌入到我的HTML,我可以按照我想要的样式。

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

如果有任何Ruby解决方案(它实际上不是关于编程,据我所知),那将是伟大的。

我想显示pdf,因为:

  • 用户可以复制文本
  • 文字在原来的布局

所以我不想把它显示为图像或转换后的文本。但是我想用简单的设计来展示页面。没有Flex之类的

是的,这是可能的,有了HTML5!

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

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

  • IE9和当前版本的Google Chrome、Firefox、Safari
  • IE8及以下版本不支持pdf.js(缺乏HTML5功能)
使用

在HTML文件中包含javascript库并添加-元素(是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);
  });
});

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

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

最接近你要求的是Google Doc Viewer。它至少不需要JavaScript以外的任何东西。

您也可以选择将PDF转换为HTML5,并使用IDRSolutions的PDF2HTML5产品显示这些页面。输出可以放在您自己的CMS中,您可以添加自己的GUI,也可以使用现有的选项。你可以看看这个免费转换器的潜在输出,如果你喜欢的话,可以试用一下,它是一个100%的Java库,尽管这可能是一个问题,也可能不是问题。

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

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

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

  • http://www.adobe.com/products/flashpaper/

例子:

  • http://www.adobe.com/products/flashpaper/examples/
  • 考虑兼容性,最好是使用正版adobe软件渲染pdf。第三方渲染器在大多数情况下都可以工作,但偶尔会在格式的某些方面遇到麻烦。你可以从adobe网站上下载pdf阅读器,在浏览器上做一个简单的设置,然后让浏览器使用真正的pdf渲染器打开pdf文件。

  • 如果你想在不使用web浏览器的情况下以编程方式显示pdf文件,这意味着你需要一个与pdf渲染器一起工作的GUI工具包。我所知道的是poppler on ruby/gnome2。我曾经能够在ruby 1.8中使用它,但自从我转移到ruby 1.9之后,我就没有尝试过它。ruby的其他标准GUI工具包是wxrubyfxrubyruby/qtshoes等,但我不确定其中哪一个有pdf渲染器。

不需要外部库。许多浏览器已经支持多种方式来查看pdf。比如object, iframe, embed。您可以使用带有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>

最新更新