fix pdf form flatten fields

pull/289/head 1.5.8
Pete Matsyburka 1 year ago
parent 99bc46b40f
commit a249b0a678

@ -26,6 +26,8 @@ class TemplatesUploadsController < ApplicationController
rescue StandardError => e rescue StandardError => e
Rollbar.error(e) if defined?(Rollbar) Rollbar.error(e) if defined?(Rollbar)
raise if Rails.env.local?
redirect_to root_path, alert: 'Unable to upload file' redirect_to root_path, alert: 'Unable to upload file'
end end

@ -383,6 +383,7 @@ module Submissions
if flatten if flatten
begin begin
pdf.acro_form.create_appearances(force: true) if pdf.acro_form && pdf.acro_form[:NeedAppearances]
pdf.acro_form&.flatten pdf.acro_form&.flatten
rescue StandardError => e rescue StandardError => e
Rollbar.error(e) if defined?(Rollbar) Rollbar.error(e) if defined?(Rollbar)

@ -48,7 +48,7 @@ module Templates
pdf = HexaPDF::Document.new(io: StringIO.new(data)) pdf = HexaPDF::Document.new(io: StringIO.new(data))
number_of_pages = pdf.pages.size number_of_pages = pdf.pages.size
data = maybe_flatten_form(data, pdf, attachment) data = maybe_flatten_form(data, pdf)
attachment.metadata['pdf'] ||= {} attachment.metadata['pdf'] ||= {}
attachment.metadata['pdf']['number_of_pages'] = number_of_pages attachment.metadata['pdf']['number_of_pages'] = number_of_pages
@ -74,15 +74,15 @@ module Templates
end end
end end
def maybe_flatten_form(data, pdf, attachment) def maybe_flatten_form(data, pdf)
return data if data.size > MAX_FLATTEN_FILE_SIZE return data if data.size > MAX_FLATTEN_FILE_SIZE
return data if pdf.acro_form.blank? return data if pdf.acro_form.blank?
return data if attachment.record.account.account_configs
.find_or_initialize_by(key: AccountConfig::FLATTEN_RESULT_PDF_KEY).value == false
io = StringIO.new io = StringIO.new
pdf.acro_form&.flatten pdf.acro_form.create_appearances(force: true) if pdf.acro_form[:NeedAppearances]
pdf.acro_form.flatten
pdf.write(io, incremental: false, validate: false) pdf.write(io, incremental: false, validate: false)
io.string io.string

Loading…
Cancel
Save