![](https://products-qa.fileformat.com/zh/pdf/ruby/prawn/header-image.png)
Prawn
通过开源 Ruby 库快速生成 PDF
免费的 Ruby PDF API,允许程序员创建和修改 PDF 文件;在 Ruby Apps 中的 PDF 页面上插入、编辑图形和绘制文本。
便携式文档格式 (PDF) 是一种非常流行的可靠且安全的文件格式,用于在世界范围内展示、共享和打印文件。开源 Ruby 库 Prawn 提供了使用 Ruby 库处理 PDF 文档的完整功能。该库非常易于使用且文档齐全,使开发人员的工作变得轻松。它帮助开发人员轻松创建高度灵活的 PDF 文档生成系统。
Prawn 库包含几个重要功能,使软件开发人员能够轻松处理他们的 PDF 文档,例如从头开始创建 PDF、嵌入 PNG 和 JPG 图像、将矢量绘图添加到 PDF、使用内置字体和 TrueType 字体、加密支持, 使用密码保护 PDF 文档、文本渲染支持、基于 UTF-8 的字体支持、从右到左的文本渲染、轮廓支持等等。
大虾入门
要在您的系统上安装 Prawn,请运行以下命令,
通过 RubyGems 安装 Prawn
gem install prawn
通过 Ruby 库创建 PDF 文件
开源 Ruby 库 Prawn 使软件开发人员能够使用几行 Ruby 代码以编程方式创建 PDF 文档。该库提供了 3 种使用默认设置和字体创建 PDF 文档的不同方法。这些是通过赋值、隐式块或显式块。创建后,您可以轻松访问和修改 PDF 文档的每个部分。您可以轻松添加新页面、设置页面大小和边距、更改字体样式、应用格式等等。
通过 Ruby 创建和渲染 PDF 文件
# Using explicit block form and rendering to a file
content = "Hello World"
Prawn::Document.generate "example.pdf" do |pdf|
# self here is left alone
pdf.font "Times-Roman"
pdf.draw_text content, :at => [200,720], :size => 32
end
在 PDF 中插入和编辑图形
Prawn 库使软件开发人员能够使用 Ruby 代码将矢量图添加到他们的 PDF 文档中。开发人员可以轻松地将线、多边形、曲线、圆等绘制到 PDF 页面中他们选择的任何位置。该库包含几个用于处理图形的重要功能,例如填充颜色、应用虚线样式和图案、设置线条粗细并对其应用颜色、使用混合模式、应用变换以及透明度等。
在 PDF 文档中使用图像
开源 Ruby 库 Prawn 支持使用 Ruby 命令将图像插入 PDF 文件。目前,该库已包含对 JPEG 和 PNG 图像的支持。提供了几个重要的功能来管理 PDF 文件中的图像,例如调整位置、图像缩放支持、单独设置图像宽度和高度、按比例调整图像等等。
通过 Ruby 生成图像和缩放以适应 PDF
Prawn::Document.generate("image2.pdf", :page_layout => :landscape) do
pigs = "#{Prawn::DATADIR}/images/pigs.jpg"
image pigs, :at => [50,450], :width => 450
dice = "#{Prawn::DATADIR}/images/dice.png"
image dice, :at => [50, 450], :scale => 0.75
end
在 PDF 页面上绘制文本
Prawn 库使软件专业人员能够轻松地在其 Ruby 应用程序内的 PDF 页面上绘制文本。您可以轻松地在 PDF 页面的指定位置开始绘制文本。您可以轻松调整文本位置、根据需要旋转文本、应用字体大小、支持单行和多行等等。
通过 Ruby 库在 PDF 页面上绘制文本
def draw_text!(text, options)
unless font.unicode? || font.class.hide_m17n_warning || text.ascii_only?
warn "PDF's built-in fonts have very limited support for " \
"internationalized text.\nIf you need full UTF-8 support, " \
"consider using an external font instead.\n\nTo disable this " \
"warning, add the following line to your code:\n" \
"Prawn::Fonts::AFM.hide_m17n_warning = true\n"
font.class.hide_m17n_warning = true
end
x, y = map_to_absolute(options[:at])
add_text_content(text, x, y, options)
end