Prawn::Rails 技术文档
本文档旨在帮助用户安装、使用及详细了解 Prawn::Rails 项目,以下为项目的技术细节。
1. 安装指南
首先,确保您的项目已经安装了 Rails 3。接下来,按照以下步骤进行安装:
-
在您的项目 Gemfile 文件中添加以下行:
gem 'prawn_rails' -
运行以下命令安装 gem:
bundle install
安装完成后,您可以使用 Prawn::Rails 创建 PDF 视图。
2. 项目的使用说明
基本使用
Prawn::Rails 为 Prawn 库提供了一个非常薄的封装。一个 Prawn::Rails 视图应该仅包含一个调用 prawn_document 函数和一个代码块。这会创建一个 Prawn::Document 实例并将其传递给代码块。
创建一个简单的 PDF 视图,例如:
# views/.../simple.pdf.prawn
prawn_document() do |pdf|
pdf.text "Hello World"
end
这将生成一个只包含文本 "Hello World" 的简单 PDF。
局部视图
虽然布局目前与 Prawn::Rails 不兼容,但局部视图可以正常使用。渲染局部视图的方式与普通视图类似。例如:
# views/.../partial.pdf.prawn
prawn_document do |pdf|
render "frontpage", :pdf => pdf
pdf.text "something else"
end
# views/.../_frontpage.pdf.prawn
pdf.text "frontpage action!!"
pdf.start_new_page
这将生成一个包含首页的 PDF。
实例变量
与普通 Rails 视图一样,控制器中赋值的实例变量在视图中可用。例如:
# home_controller.rb
class HomeController < ApplicationController
def index
@people=['Jane','John','Jack']
end
end
# views/.../index.pdf.prawn
prawn_document(:page_layout => :landscape) do |pdf|
@people.each {|person| pdf.text person}
end
这将生成一个包含 Jane、John 和 Jack 的 PDF。
渲染选项
请注意,我们向 prawn_document 传递了一个散列。散列中的任何参数都将传递给 Prawn::Document 的构造函数,但有一些例外。:renderer、:force_download 和 :filename 选项不会被传递,而是按以下描述使用。
:renderer 选项将在创建文档之前被移除,并可用于覆盖用于渲染的类,如下所示:
# views/.../override.pdf.prawn
prawn_document({:renderer => ApplicationHelper::Foo})
因此,对于上述视图,您可能有一个类似以下内容的 application_helper.rb 文件:
# application_helper.rb
module ApplicationHelper
class Foo < Prawn::Document
def initialize(opts={})
super
text "Foo"
text "Bar"
end
end
end
这将生成一个包含行 Foo 和 Bar 的预设报告。
强制保存
:force_download 选项会使得浏览器显示 "另存为" 对话框,而不是尝试在浏览器中显示内容(这是通过设置 Content-Disposition 头部实现的)。
注意:如果使用了 :filename 选项,由于 Acrobat Reader 插件的兼容性问题,默认会设置为 true。
# views/.../saveas.pdf.prawn
prawn_document(:force_download=>true) do |pdf|
pdf.text "Hello World"
end
上述代码会在带有 PDF 插件的浏览器中显示 "另存为" 对话框。
最后是 :filename 选项。这允许您覆盖默认的文件名,而不是使用动作的名称。
注意:您应该在文件名中包含 .pdf 扩展名。Prawn::Rails 不会为您添加。
# views/.../filename.pdf.prawn
prawn_document(:filename=>'Hello.pdf') do |pdf|
pdf.text "Hello World"
end
这将使用户被提示下载名为 "Hello.pdf" 的文件。
3. 项目 API 使用文档
本项目主要使用 prawn_document 方法来创建 PDF 文档,具体使用方法请参考以下示例:
prawn_document() do |pdf|
# 在此处添加您的 PDF 内容
end
您还可以通过传递散列来设置渲染选项,如 :page_layout、:renderer、:force_download 和 :filename。
4. 项目安装方式
项目安装方式已在 "安装指南" 部分中详细说明。请按照以下步骤安装:
- 在 Gemfile 中添加
gem 'prawn_rails'。 - 运行
bundle install。
以上即为 Prawn::Rails 项目的技术文档。希望对您有所帮助!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00