携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情
一、PDF 操作
PDF 格式是使用最广泛的文档格式之一,Ruby 中提供了很多操作 PDF 文档的库,如果 PDF::HTMLDOC, PDF::Write 以及 PDF::FPDF 等。
Ruby FPDF 是 PDF 创建工具 FPDF 的 Ruby 接口,不仅提供了创建 PDF 的支持,同时也是对中文支持最好的 PDF 创建工具。
FPDF 不是 Ruby 自带的库,需要通过 gem 进行安装 gem install fpdf
require 'fpdf'
pdf = FPDF.new
pdf.AddPage
pdf.SetFont("Arial", "B", 20)
pdf.Cell(40, 10, 'PDF Content Create By FPDF')
pdf.Output('pdf_by_fpdf.pdf')
执行上述代码,在代码同级目录下会多出一个 pdf_by_fpdf.pdf 文件,文件内容为
二、ZIP 操作
ZIP 是压缩文件的格式,Ruby 中的 Rubyzip 库可以创建一个新的 ZIP 文件或者解压已有的 ZIP 文件。
Rubyzip 库不是 Ruby 自带的库,也是需要通过 gem install rubyzip 来安装。
查询 rubyzip 库
安装 rubyzip 库
使用 ZIP 库进行读写和创建 ZIP 文件。
require 'zip'
# 创建 test.zip 文件
Zip::File.open('test.zip', Zip::File::CREATE) do |zipfile|
zipfile.get_output_stream('text.txt') do |f|
f.puts "test text"
end
zipfile.mkdir('test_dir')
end
# 打开 test.zip 文件
Zip::File.open('test.zip', Zip::File::CREATE) do |zipfile|
zipfile.each do |file|
puts file
end
puts zipfile.read('text.txt')
zipfile.remove('text.txt')
end
执行上述代码,输出结果如下:
text.txt
test_dir/
test text
该代码文件同级目录下多出一个 test.zip 文件。
使用 ZIP 库将文件压缩到 zip 文件中,需要创建一个 zip 文件夹,放入一些文本文件或者图片等,使用 ZIP 库将 zip 文件夹中的文件迭代压缩至 testzip.zip 文件中
require 'zip'
# 添加目录或者文件到 zip 文件
def add_to_zip_file(zip_file_name, file_path)
def add_file(start_path, file_path, zip)
# 如果 file_path 为一个目录,则迭代将目录中的文件添加到zip 文件中
if File.directory?(file_path)
Dir.foreach(file_path) do |filename|
add_file(start_path, "#{file_path}/#{filename}", zip) unless filename == '.' or filename == '..'
end
else
zip.add(file_path, file_path)
end
end
# 创建 zip 文件
Zip::File.open zip_file_name, Zip::File::CREATE do |zip|
# 添加zip文件
add_file(file_path, file_path,zip)
end
end
add_to_zip_file "testzip.zip", 'zip/'
执行上述代码,可以看到代码文件同级目录下多出一个 testzip.zip 文件。
接着我们使用 ZIP 库将压缩的 zip 文件解压出来
# 解压 zip 文件
def extract_from_zip_file(zip_file_name, file_path)
# 读取zip 文件
Zip::File.open zip_file_name, Zip::File::CREATE do |zip|
zip.each do |file|
zip.extract(file, file_path + File.basename(file.to_s))
end
end
end
extract_from_zip_file "testzip.zip", ''
执行上述代码,即可在同级目录下看到解压出来的文件。