From 1ba8a9a374f22c82a2a23ef6e80b980dfee54637 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 24 Mar 2025 09:44:10 +0200 Subject: [PATCH] fix pdf fields extract --- app/controllers/templates_debug_controller.rb | 5 +++-- lib/templates/find_acro_fields.rb | 4 ++-- lib/templates/process_document.rb | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/templates_debug_controller.rb b/app/controllers/templates_debug_controller.rb index 02d3d8b0..810c042a 100644 --- a/app/controllers/templates_debug_controller.rb +++ b/app/controllers/templates_debug_controller.rb @@ -6,9 +6,10 @@ class TemplatesDebugController < ApplicationController def show attachment = @template.documents.first - pdf = HexaPDF::Document.new(io: StringIO.new(attachment.download)) + data = attachment.download + pdf = HexaPDF::Document.new(io: StringIO.new(data)) - fields = Templates::FindAcroFields.call(pdf, attachment) + fields = Templates::FindAcroFields.call(pdf, attachment, data) attachment.metadata['pdf'] ||= {} attachment.metadata['pdf']['fields'] = fields diff --git a/lib/templates/find_acro_fields.rb b/lib/templates/find_acro_fields.rb index 04747efb..97088390 100644 --- a/lib/templates/find_acro_fields.rb +++ b/lib/templates/find_acro_fields.rb @@ -32,8 +32,8 @@ module Templates module_function # rubocop:disable Metrics - def call(pdf, attachment) - return [] unless pdf.acro_form + def call(pdf, attachment, data) + return [] if pdf.acro_form.blank? && data.exclude?('/Form') fields, annots_index = build_fields_with_pages(pdf) diff --git a/lib/templates/process_document.rb b/lib/templates/process_document.rb index 74949893..54174b06 100644 --- a/lib/templates/process_document.rb +++ b/lib/templates/process_document.rb @@ -22,7 +22,7 @@ module Templates if extract_fields && data.size < MAX_FLATTEN_FILE_SIZE pdf = HexaPDF::Document.new(io: StringIO.new(data)) - fields = Templates::FindAcroFields.call(pdf, attachment) + fields = Templates::FindAcroFields.call(pdf, attachment, data) end generate_pdf_preview_images(attachment, data, pdf, max_pages:)