推荐项目:Prawn Rails
项目简介
Prawn Rails 是一个基于 Ruby on Rails 的 PDF 渲染库,它提供了简单的 API 和灵活的定制选项,让你可以轻松地为你的 Rails 应用程序生成高质量的 PDF 文档。
功能特性
- 使用简单的 DSL 定义 PDF 布局和样式
- 支持多种字体、颜色、图像和图形
- 可以嵌入 HTML 和 CSS,实现更复杂的布局和样式
- 提供了丰富的文本格式化选项,如列表、表格和段落
- 可以自定义页眉、页脚和分页符
- 可以在生成的 PDF 中添加交互式表单元素
- 支持直接导出到 PDF 或通过 HTTP 发送到客户端浏览器
使用场景
Prawn Rails 可以用于各种需要生成 PDF 文件的场景,例如:
- 生成发票、收据和报告
- 创建产品手册、用户指南和技术文档
- 设计营销材料、传单和宣传册
- 生成证书、奖状和证明文件
- 创建可打印的工作簿、测试题和问卷调查
开始使用
要在你的 Rails 项目中使用 Prawn Rails,首先你需要安装 gem:
gem 'prawn-rails'
然后,你可以创建一个新的 PDF 模型,并使用 Prawn Rails 的 DSL 来定义布局和样式:
class InvoicePdf < Prawn::Document
def initialize(invoice)
super()
@invoice = invoice
# 定义页面大小和边距
size A4, margins: 20
# 添加页眉和页脚
header do
text "Invoice ##{@invoice.id}", style: :bold, align: :center
end
footer do
text "#{Time.current.strftime('%Y-%m-%d')}", align: :right
end
# 添加主要内容
move_down 20
text "Company Name", style: :bold
text "Address Line 1"
text "Address Line 2"
start_new_page
text "Invoice Details:", style: :bold
table([["Item", "Description", "Quantity", "Price"], @invoice.line_items.map { |li| [li.product.name, li.description, li.quantity, li.price] }], headers: true) do
row(0).font_style = :bold
columns(3..-1).align = :right
end
move_down 20
total_price = @invoice.line_items.sum(&:total_price)
text "Total: $#{total_price}", style: :bold, align: :right
end
end
最后,你可以在控制器中实例化 PDF 模型,并将其发送给客户端浏览器:
class InvoicesController < ApplicationController
def show
@invoice = Invoice.find(params[:id])
respond_to do |format|
format.pdf do
pdf = InvoicePdf.new(@invoice)
send_data pdf.render, filename: "invoice_#{@invoice.id}.pdf", type: "application/pdf"
end
end
end
end
这就是一个基本的示例,展示了如何使用 Prawn Rails 来生成一份包含公司信息、商品清单和总价的发票。你可以根据自己的需求进行定制和扩展,以满足更多的业务场景。
结语
如果你正在寻找一个简单易用、功能强大的 PDF 渲染库,那么不妨试试 Prawn Rails。它可以帮助你快速地为你的 Rails 应用程序开发出高质量的 PDF 文档,节省时间并提高效率。现在就去尝试一下吧!