Rails中从HTML页面生成PDF的方法

8
我正在寻找一种工具,可以从Rails将HTML视图页面转换为PDF。我希望样式保持不变,并且能够识别CSS样式。我听说过Prince XML和Wicked PDF。我想知道使用它们之一的优缺点。此外,我想知道PDF的渲染是否存在任何与样式相关的问题(样式是否会被正确呈现)。如果有其他工具,请告知。
谢谢, Prince
6个回答

13

PDFKit 在我看来非常不错,但是我更喜欢 wicked_pdf,因为它可以让你对文档进行细致的控制。

PrinceXMLprincely 很棒,但是价格较高。如果你想尝试一下,DocRaptor 是一个不错的网络服务,但唯一比基于免费 wkhtmltopdf 的解决方案优秀的是它能够正确处理分页、不会剪切表格行和重复头部。

声明:我是 wicked_pdf 的维护者之一,也是 DocRaptor 的好朋友。


4
你可以使用'wicked_pdf' gem。它提供了非常好的支持,可以使用HTML代码生成PDF。
在控制器中:
def show
  @report = Report.find(params[:id])
  respond_to do |format|
    format.html # show.html.erb
    format.pdf do
      render :pdf => "report",:template => "reports/show"
    end 
  end
end

创建一个show.pdf.erb文件,您可以编写简单的HTML。
<%= wicked_pdf_stylesheet_link_tag "application" %>
<h1> Report </h1>
<p>
<%= @report.details %>
.................................
</p>

4

Prince是PDF生成方面绝对最好的。有一个名为DocRaptor.com的Web服务与Prince XML合作。您可以使用他们的API在任何语言中生成PDF和Excel文档,而无需支付Prince许可费用,也不需要下载任何东西。


2

Rubyprince,

在Rails中有很多方法可以生成PDF文件。Railscasts已经制作了三个与此相关的视频教程。

但是如果您想要创建具有强烈样式的高质量印刷品,我个人建议使用PrinceXML。不幸的是,PrinceXML的价格标签很高,但是您获得了很多价值。有一个名为princely的Ruby gem,可以帮助您将API抽象成Ruby调用。我最喜欢Prince的地方是可以使用CSS生成标准印刷材料的内容。例如:页码、带有引导线的目录等。我还建议阅读一下这篇博客文章Creating PDF Documents in Ruby on Rails——它有些旧,但其中的信息会让您了解PrinceXML的使用方式。


谢谢,前两个RailsCasts不能用于从HTML创建PDF...PrinceXML绝对位于我的首选列表中。 - rubyprince

1

Flying Saucer是生成pdf的另一种选择。Flying Saucer是一个在Rails中的Java库,您可以使用acts_as_flying_saucer宝石或插件来生成PDF。


好的库和宝石..很高兴能听到宝石作者的消息 :)..但我已经在之前的项目中使用了PDFKit..下一个项目会尝试使用它 :) - rubyprince

1

PDFkit,它使用了一个WebKit渲染引擎(wkhtmltopdf),与Safari相同。这意味着您可以使用在Safari中有效的任何CSS样式。易于安装且效果良好。

-webkit-gradient -webkit-border-radius等等,尽情发挥吧 :)

注意:wicked_pdf也使用wkhtmltopdf,但我认为PDFkit使用起来更加舒适。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接