Files
Pete Matsyburka 1f338dfd2b adjust font size
2025-07-14 12:53:15 +03:00

49 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module PdfUtils
DEFAULT_DPI = 72
US_LETTER_W = DEFAULT_DPI * 8.5
module_function
def encrypted?(data, password: nil)
HexaPDF::Document.new(io: StringIO.new(data), decryption_opts: { password: })
false
rescue HexaPDF::EncryptionError
true
end
def decrypt(data, password)
encrypted_doc = HexaPDF::Document.new(io: StringIO.new(data), decryption_opts: { password: })
decrypted_doc = HexaPDF::Document.new
encrypted_doc.pages.each do |page|
decrypted_doc.pages << decrypted_doc.import(page)
end
decrypted_io = StringIO.new
decrypted_doc.write(decrypted_io, validate: false)
decrypted_io.tap(&:rewind).read
end
def merge(files)
merged_pdf = HexaPDF::Document.new
files.each do |file|
pdf = HexaPDF::Document.new(io: file)
pdf.pages.each { |page| merged_pdf.pages << merged_pdf.import(page) }
end
merged_content = StringIO.new
merged_pdf.validate(auto_correct: true)
merged_pdf.write(merged_content, validate: false)
merged_content.rewind
merged_content
end
end