Rails实现HTML转PDF的方法

介绍

在开发web应用程序时,有时候需要将html文档转换为pdf格式,这可能是因为需要将电子文件发送到不同的人员或顾客,也可能是因为需要生成具有商业价值的报告或凭证。在Ruby on Rails框架中,有很多可以执行此操作的工具和库,而本文将介绍一些流行的工具以将html文档转换为pdf格式。

在Rails中使用Wicked PDF

安装

Wicked PDF是一个基于wkhtmltopdf的Ruby on Rails插件,可以使用户轻松将HTML文档转换为PDF格式。因此,首先需要安装wkhtmltopdf和wicked_pdf插件。建议在linux服务器上安装wkhtmltopdf。

# 安装依赖项

sudo apt-get install -y wkhtmltopdf

sudo apt-get install -y xvfb

sudo apt-get install -y libjpeg-dev

# Gemfile中添加

gem 'wicked_pdf'

# 安装

bundle install

使用

要使用插件,需要配置控制器以使用render_with_wicked_pdf方法呈现PDF文件。然后通过使用format.pdf指定所需的格式以调用特定的操作。

# 配置controller

class ReportsController < ApplicationController

def index

# Code to gather data

respond_to do |format|

format.html

format.pdf do

render pdf: "report",

:template => "reports/index.html.erb",

# 头脚部防止在文本中的断开,可以通过设置 :header 或 :footer 来定义。

:header => {:html => { :template => 'shared/header.pdf.erb'} },

# footer: {:html => { :template => 'shared/footer.pdf.erb'} }

end

end

end

end

Wicked PDF的优势和不足

Wicked PDF的主要优点是,具有很好的性能和堆栈跟踪,因此可以快速处理大量请求。另外,Wicked PDF遵循D.R.Y设计哲学,是一种可完全集成到Rails应用程序中的解决方案。

Wicked PDF的缺点包括,需要单独安装wkhtmltopdf。虽然wkhtmltopdf是一个优秀的工具,但它没有在所有平台上都获得良好的支持,因此可能会出现一些问题。

将HTML文档转换为PDF格式的另一种方法:PrawnPDF

安装

PrawnPDF是一种在Ruby on Rails中使用广泛的pdf生成器,使用PrawnPDF进行pdf生成时,其概念是你手写pdf,实际上,prawnpdf是一个直观易用的Ruby DSL库,可以方便地定义PDF文档的页面大小、布局、文本样式、表格、图形以及其他PDF元素。

安装prawnPDF 最简单的方法是添加以下代码到Gemfile文件中:

gem "prawn"

那么就可以在控制器中使用prawn生成PDF,具体请看代码块:

# See https://gist.github.com/silverp1/76a975ab2ee3992e8cd6#file-report_controller-rb-L11-L20

class ReportController < ApplicationController

def index

pdf = Prawn::Document.new( :page_size => 'A4', :page_layout => :landscape, :margin => 5)

pdf.text "Hello World"

pdf.render_file "report.pdf"

end

end

PrawnPDF的优势和不足

PrawnPDF的优势包括,它可以生成高度定制的pdf文档,PrawnPDF还支持自定义字体和图片等特性。此外,PrawnPDF提供的完整文档,因此在使用时,可以容易地首先阅读并快速上手。

PrawnPDF主要的缺点是,其使用方式比其他一些工具要复杂。虽然与Wicked PDF相比,设置并不那么麻烦,但至少需要花费时间和精力阅读文档和教程。

总结

无论你选择Wicked PDF或Prawn PDF,都是一种可靠的方法将HTML文档转换为PDF格式。 Wicked PDF是一个基于wkhtmltopdf的插件,而Prawn PDF则是一种完全不同的方法,用Ruby DSL代码定义PDF文档。如果确实需要尽快将html文档转换为pdf,请选择Wicked PDF。如果你需要具有更高度定制的PDF文件,Prawn PDF可能是更好的选择。

上一篇:span什么意思?

下一篇:span标签的作用