|  |  | @ -4,12 +4,29 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  |   module GenerateResultAttachments |  |  |  |   module GenerateResultAttachments | 
			
		
	
		
		
			
				
					
					|  |  |  |     FONT_SIZE = 11 |  |  |  |     FONT_SIZE = 11 | 
			
		
	
		
		
			
				
					
					|  |  |  |     FONT_PATH = '/fonts/GoNotoKurrent-Regular.ttf' |  |  |  |     FONT_PATH = '/fonts/GoNotoKurrent-Regular.ttf' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     FONT_BOLD_PATH = '/fonts/GoNotoKurrent-Bold.ttf' | 
			
		
	
		
		
			
				
					
					|  |  |  |     FONT_NAME = if File.exist?(FONT_PATH) |  |  |  |     FONT_NAME = if File.exist?(FONT_PATH) | 
			
		
	
		
		
			
				
					
					|  |  |  |                   FONT_PATH |  |  |  |                   FONT_PATH | 
			
		
	
		
		
			
				
					
					|  |  |  |                 else |  |  |  |                 else | 
			
		
	
		
		
			
				
					
					|  |  |  |                   'Helvetica' |  |  |  |                   'Helvetica' | 
			
		
	
		
		
			
				
					
					|  |  |  |                 end |  |  |  |                 end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     FONT_BOLD_NAME = if File.exist?(FONT_BOLD_PATH) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                        FONT_BOLD_PATH | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                      else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                        'Helvetica' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                      end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     FONT_ITALIC_NAME = 'Helvetica' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     FONT_BOLD_ITALIC_NAME = 'Helvetica' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     FONT_VARIANS = { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       none: FONT_NAME, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       bold: FONT_BOLD_NAME, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       italic: FONT_ITALIC_NAME, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       bold_italic: FONT_BOLD_ITALIC_NAME | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     }.freeze | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     SIGN_REASON = 'Signed by %<name>s with DocuSeal.com' |  |  |  |     SIGN_REASON = 'Signed by %<name>s with DocuSeal.com' | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     RTL_REGEXP = TextUtils::RTL_REGEXP |  |  |  |     RTL_REGEXP = TextUtils::RTL_REGEXP | 
			
		
	
	
		
		
			
				
					|  |  | @ -18,12 +35,15 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  |     TEXT_TOP_MARGIN = 1 |  |  |  |     TEXT_TOP_MARGIN = 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |     MAX_PAGE_ROTATE = 20 |  |  |  |     MAX_PAGE_ROTATE = 20 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     COURIER_FONT = 'Courier' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     A4_SIZE = [595, 842].freeze |  |  |  |     A4_SIZE = [595, 842].freeze | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     TESTING_FOOTER = 'Testing Document - NOT LEGALLY BINDING' |  |  |  |     TESTING_FOOTER = 'Testing Document - NOT LEGALLY BINDING' | 
			
		
	
		
		
			
				
					
					|  |  |  |     DEFAULT_FONTS = %w[Times Helvetica Courier].freeze |  |  |  |     DEFAULT_FONTS = %w[Times Helvetica Courier].freeze | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     FONTS_LINE_HEIGHT = { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       'Times' => 1.4, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       'Helvetica' => 1.4, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       'Courier' => 1.6 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     }.freeze | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     MISSING_GLYPH_REPLACE = { |  |  |  |     MISSING_GLYPH_REPLACE = { | 
			
		
	
		
		
			
				
					
					|  |  |  |       '▪' => '-', |  |  |  |       '▪' => '-', | 
			
		
	
	
		
		
			
				
					|  |  | @ -192,8 +212,16 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  |           fill_color = field.dig('preferences', 'color').presence |  |  |  |           fill_color = field.dig('preferences', 'color').presence | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |           font_name = field.dig('preferences', 'font') |  |  |  |           font_name = field.dig('preferences', 'font') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           font_variant = (field.dig('preferences', 'font_type').presence || 'none').to_sym | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |           font_name = FONT_NAME unless font_name.in?(DEFAULT_FONTS) |  |  |  |           font_name = FONT_NAME unless font_name.in?(DEFAULT_FONTS) | 
			
		
	
		
		
			
				
					
					|  |  |  |           font = pdf.fonts.add(font_name) |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           if font_variant != :none && font_name == FONT_NAME | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             font_name = FONT_VARIANS[font_variant] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             font_variant = nil unless font_name.in?(DEFAULT_FONTS) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           font = pdf.fonts.add(font_name, variant: font_variant) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |           value = submitter.values[field['uuid']] |  |  |  |           value = submitter.values[field['uuid']] | 
			
		
	
		
		
			
				
					
					|  |  |  |           value = field['default_value'] if field['type'] == 'heading' |  |  |  |           value = field['default_value'] if field['type'] == 'heading' | 
			
		
	
	
		
		
			
				
					|  |  | @ -449,7 +477,7 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  |             end |  |  |  |             end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             text_params = { font:, fill_color:, font_size: } |  |  |  |             text_params = { font:, fill_color:, font_size: } | 
			
		
	
		
		
			
				
					
					|  |  |  |             text_params[:line_height] = text_params[:font_size] * 1.6 if font_name == COURIER_FONT |  |  |  |             text_params[:line_height] = text_params[:font_size] * (FONTS_LINE_HEIGHT[font_name] || 1) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             text = HexaPDF::Layout::TextFragment.create(value, **text_params) |  |  |  |             text = HexaPDF::Layout::TextFragment.create(value, **text_params) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -458,7 +486,7 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if preferences_font_size.blank? && box_height > (area['h'] * height) + 1 |  |  |  |             if preferences_font_size.blank? && box_height > (area['h'] * height) + 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |               text_params[:font_size] = (font_size / 1.4).to_i |  |  |  |               text_params[:font_size] = (font_size / 1.4).to_i | 
			
		
	
		
		
			
				
					
					|  |  |  |               text_params[:line_height] = text_params[:font_size] * 1.6 if font_name == COURIER_FONT |  |  |  |               text_params[:line_height] = text_params[:font_size] * (FONTS_LINE_HEIGHT[font_name] || 1) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |               text = HexaPDF::Layout::TextFragment.create(value, **text_params) |  |  |  |               text = HexaPDF::Layout::TextFragment.create(value, **text_params) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -469,7 +497,7 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if preferences_font_size.blank? && box_height > (area['h'] * height) + 1 |  |  |  |             if preferences_font_size.blank? && box_height > (area['h'] * height) + 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |               text_params[:font_size] = (font_size / 1.9).to_i |  |  |  |               text_params[:font_size] = (font_size / 1.9).to_i | 
			
		
	
		
		
			
				
					
					|  |  |  |               text_params[:line_height] = text_params[:font_size] * 1.6 if font_name == COURIER_FONT |  |  |  |               text_params[:line_height] = text_params[:font_size] * (FONTS_LINE_HEIGHT[font_name] || 1) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |               text = HexaPDF::Layout::TextFragment.create(value, **text_params) |  |  |  |               text = HexaPDF::Layout::TextFragment.create(value, **text_params) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |