From 27d075ed63e2c7a77af91384f00db64010a6b1e0 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Thu, 13 Aug 2026 09:52:58 +0300 Subject: [PATCH] optimize merge pdf --- lib/pdf_utils.rb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/pdf_utils.rb b/lib/pdf_utils.rb index 938f4e4d..71595479 100644 --- a/lib/pdf_utils.rb +++ b/lib/pdf_utils.rb @@ -24,19 +24,19 @@ module PdfUtils decrypted_io.tap(&:rewind).read end - def merge(files) - merged_pdf = HexaPDF::Document.new + def merge(io_files) + merged_content = StringIO.new - files.each do |file| - pdf = HexaPDF::Document.new(io: file) - pdf.pages.each { |page| merged_pdf.pages << merged_pdf.import(page) } + Pdfium.with_instance do + Pdfium::Document.create do |merged_pdf| + io_files.each do |io| + Pdfium::Document.open_io(io) { |pdf| merged_pdf.import_pages(pdf) } + end + + merged_pdf.save(merged_content) + end end - merged_content = StringIO.new - merged_pdf.validate(auto_correct: true) - merged_pdf.write(merged_content, validate: false) - merged_content.rewind - - merged_content + merged_content.tap(&:rewind) end end