前提条件
- Ruby 3.1.0
- Rails 7.0.4
- gem 'rubyzip'
やりたいこと
PDFファイルをzipファイルに圧縮する。
方法
1. rubyzipのGemをインストールする
Gemファイルに以下を追加する。
Gemfile
gem 'rubyzip'
コンソールからGemをインストールする。
コンソール
bundle install
2. rubyzipを使用してプログラムを作成する
pdf_to_zip.rb
require 'zip'
module ABC
class PdfToZip
class << self
def exe
#zip化するPDFが格納されているディレクトリ
pdf_folder_path = "<PDFが格納されているディレクトリパス>"
#zipファイルを出力するディレクトリ/ファイル名
zip_folder_name = "<zipファイルを出力するディレクトリパス>/<zipファイル名>"
#zip化するPDFをリストに格納
pdfs = [test.pdf, test2.pdf, test3.pdf]
#リストのファイルを一つのzipファイルに圧縮
Zip::File.open(zip_folder_name, Zip::File::CREATE) do |zipfile|
pdfs.each do |input|
zipfile.add("<zipファイル内のファイル名>", "<圧縮するPDFのフルパス>")
end
end
end
end
end
end
-詳細-
① rubyzipライブラリを使う宣言をする。
pdf_to_zip.rb
require 'zip'
② zip化するPDFが格納されているディレクトリ、zipファイルを出力するディレクトリ/ファイル名を変数に代入する。
(例)
PDFが格納されているディレクトリ | zipファイルを出力するディレクトリ | zipファイル名 |
---|---|---|
spec/data/pdf | spec/data | test.zip |
pdf_to_zip.rb
#zip化するPDFが格納されているディレクトリ
pdf_folder_path = "spec/data/pdf"
#zipファイルを出力するディレクトリ/ファイル名
zip_folder_name = "spec/data/test.zip"
③ zip化するPDFをリストに格納する。
pdf_to_zip.rb
#zip化するPDFをリストに格納
pdfs = [test.pdf, test2.pdf, test3.pdf]
④ リストのファイルをzipファイル(変数zip_folder_name)に圧縮する
(例)
zipファイル内のファイル名 | 圧縮するPDFのフルパス |
---|---|
test.pdf | spec/data/pdf/test.pdf |
test2.pdf | spec/data/pdf/test2.pdf |
test3.pdf | spec/data/pdf/test3.pdf |
pdf_to_zip.rb
#リストのファイルを一つのzipファイルに圧縮
Zip::File.open(zip_folder_name, Zip::File::CREATE) do |zipfile|
pdfs.each do |input|
zipfile.add(input, File.join(pdf_folder_path, input)
end
end
参考