HexaPDF
用于 PDF 处理的开源 Ruby 库
通过开源免费 Ruby 库创建和修改 PDF 文档、合并 PDF 文件、减小 PDF 大小、添加注释、提取图像和文本。
可移植文档格式 (PDF) 是一种多平台文件格式,可用于以独立于软件、硬件或操作系统的电子形式共享和显示文档。 HexaPDF 是一个开源 PDF 库,允许软件开发人员创建功能强大的应用程序,以便使用 Ruby 代码处理 PDF 文档。它有助于开发人员以最小的努力从头开始创建 PDF 文件。
HexaPDF 是一个纯 Ruby 库,旨在提供易用性和改进的性能。该库包含与 PDF 文档生成和操作相关的几个重要功能,例如打开和读取现有 PDF、修改现有 PDF 文件、元信息和文本提取、从 PDF 中提取图像和文件、合并 PDF 文件、加密或解密 PDF文件,优化 PDF 文件以减小文件大小等等。
该库完全支持高级层,用于编写包含单个元素(例如标题、段落、链接、强调文本等)的文档。这些元素是自动调整、定制的,并且可以根据您的需要进行修改。您可以轻松添加其他元素类型。
HexaPDF 入门
为了顺利使用 HexaPDF 库,第一个重要的步骤是安装它。推荐的安装方式是使用 Rubygem。请使用以下命令。
使用 Rubygem 安装 HexaPDF
$ gem install hexapdf
使用 Ruby 库创建新的 PDF
开源 PDF 库 HexaPDF 提供了完整的功能,只需几个 Ruby 命令即可从头开始创建新的 PDF 文档。您需要一个空文档实例来创建 PDF。一旦创建了空的 PDF 文件,现在就可以向其中添加新页面、绘制线条、曲线、矩形、插入文本并对其应用颜色。您还可以调整线条大小并对其应用不同的颜色和效果。
使用 Ruby 库创建 PDF 文件
require 'hexapdf'
doc = HexaPDF::Document.new
canvas = doc.pages.add.canvas
canvas.font('Helvetica', size: 100)
canvas.text("Hello World!", at: [20, 400])
doc.write("hello_world.pdf", optimize: true)
通过 Ruby 合并 PDF 文件
免费 PDF 库 HexaPDF 使软件程序员可以轻松地使用 Ruby 代码组合他们的 PDF 文档。可以使用多种方式合并 PDF 文件。一种简单的方法是将页面从源文件导入目标文件。这将保留页面内容,然后可以应用合并命令来合并文件。对于更复杂的合并,请使用 HexaPDF 二进制命令。
使用 HexaPDF 合并 PDF 文件
# imports pages of the source files into the target file. Preserves the page contents themselves.
require 'hexapdf'
target = HexaPDF::Document.new
ARGV.each do |file|
pdf = HexaPDF::Document.open(file)
pdf.pages.each {|page| target.pages << target.import(page)}
end
target.write("2.merging.pdf", optimize: true)
通过 Ruby 库优化 PDF 大小
开源 PDF 库 HexaPDF 帮助软件专业人员减少 Ruby 应用程序中 PDF 文档的大小。有多种技术可用于优化 PDF 的大小,例如删除未使用和已删除的对象、使用对象和交叉引用流以及重新压缩页面内容流、字体子设置、合并或对象等。
通过 Ruby 阅读和优化 PDF 文件
// Optimize PDF Size
require 'hexapdf'
HexaPDF::Document.open(ARGV.shift) do |doc|
doc.task(:optimize, compact: true, object_streams: :generate,
compress_pages: false)
doc.write('optimizing.pdf')
end
PDF加密和解密支持
HexaPDF 库允许开发人员通过使用 Ruby 代码应用加密来保护他们的 PDF 文档。 PDF 具有通过加密内容和分配使用权限来保护它们的内置支持。在 PDF 加密过程中,所有字符串和字节流都被加密,元数据流被排除在外,以便在 PDF 文件的解析过程中可以提取它。因此,任何有兴趣查看 PDF 文档的人都必须提供密码。
通过 Ruby 对 PDF 应用数字签名
// Add Digital signatures to PDF
require 'hexapdf'
require HexaPDF.data_dir + '/cert/demo_cert.rb'
doc = HexaPDF::Document.open(ARGV[0])
doc.sign("signed.pdf", reason: 'Some reason',
certificate: HexaPDF.demo_cert.cert,
key: HexaPDF.demo_cert.key,
certificate_chain: [HexaPDF.demo_cert.sub_ca,
HexaPDF.demo_cert.root_ca])
end