From 7fe56941fd9b2e8ae78f27cbd3f7935cc6333ca5 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sun, 17 May 2026 19:46:28 +0300 Subject: [PATCH] optimize pdf images --- lib/submissions/generate_audit_trail.rb | 8 +++++++- lib/submissions/generate_result_attachments.rb | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/submissions/generate_audit_trail.rb b/lib/submissions/generate_audit_trail.rb index 35736652..2778ee4e 100644 --- a/lib/submissions/generate_audit_trail.rb +++ b/lib/submissions/generate_audit_trail.rb @@ -374,7 +374,13 @@ module Submissions scale = [600.0 / image.width, 600.0 / image.height].min resized_image = image.resize([scale, 1].min) - io = StringIO.new(resized_image.write_to_buffer('.png')) + + io = + if field['type'] == 'image' && !resized_image.has_alpha? + StringIO.new(resized_image.colourspace(:srgb).write_to_buffer('.jpg', strip: true)) + else + StringIO.new(resized_image.write_to_buffer('.png')) + end width = field['type'] == 'initials' ? 50 : 200 height = resized_image.height * (width.to_f / resized_image.width) diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb index a26025d8..50022b9b 100644 --- a/lib/submissions/generate_result_attachments.rb +++ b/lib/submissions/generate_result_attachments.rb @@ -462,7 +462,14 @@ module Submissions scale = [(area['w'] * width) / image.width, (area['h'] * height) / image.height].min - io = StringIO.new(image.resize([scale * 4, 1].select(&:positive?).min).write_to_buffer('.png')) + resized_image = image.resize([scale * 4, 1].select(&:positive?).min) + + io = + if field_type == 'image' && !resized_image.has_alpha? + StringIO.new(resized_image.colourspace(:srgb).write_to_buffer('.jpg', strip: true)) + else + StringIO.new(resized_image.write_to_buffer('.png')) + end canvas.image( io,