From 39407557f2da0971f943448e8cb2f960e96ec3e0 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Fri, 24 Apr 2026 21:44:57 +0300 Subject: [PATCH] adjust page preview --- app/javascript/application.js | 1 + app/javascript/template_builder/builder.vue | 6 ++++++ app/javascript/template_builder/document.vue | 7 ++++++- app/views/submissions/show.html.erb | 2 +- app/views/submit_form/show.html.erb | 2 +- lib/templates/process_document.rb | 3 ++- 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/javascript/application.js b/app/javascript/application.js index 29bc52dd..ff617caa 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -181,6 +181,7 @@ safeRegisterElement('template-builder', class extends HTMLElement { withConditions: this.dataset.withConditions === 'true', withDynamicDocuments: this.dataset.withDynamicDocuments === 'true', withGoogleDrive: this.dataset.withGoogleDrive === 'true', + pagePreviewFormat: this.dataset.pagePreviewFormat || '.jpg', withReplaceAndCloneUpload: true, withDownload: true, currencies: (this.dataset.currencies || '').split(',').filter(Boolean), diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue index e9d6bf91..8e8d9c30 100644 --- a/app/javascript/template_builder/builder.vue +++ b/app/javascript/template_builder/builder.vue @@ -383,6 +383,7 @@ :input-mode="inputMode" :conditional-field-index="conditionalFieldIndex" :formula-values-index="formulaValuesIndex" + :page-preview-format="pagePreviewFormat" :default-fields="[...defaultRequiredFields, ...defaultFields]" :allow-draw="!onlyDefinedFields || drawField || drawCustomField" :with-signature-id="withSignatureId" @@ -839,6 +840,11 @@ export default { required: false, default: () => [] }, + pagePreviewFormat: { + type: String, + required: false, + default: '.jpg' + }, acceptFileTypes: { type: String, required: false, diff --git a/app/javascript/template_builder/document.vue b/app/javascript/template_builder/document.vue index ee9a0836..8a96825c 100644 --- a/app/javascript/template_builder/document.vue +++ b/app/javascript/template_builder/document.vue @@ -150,6 +150,11 @@ export default { required: false, default: false }, + pagePreviewFormat: { + type: String, + required: false, + default: '.jpg' + }, withFieldsDetection: { type: Boolean, required: false, @@ -180,7 +185,7 @@ export default { return this.previewImagesIndex[i] || reactive({ metadata: { ...lazyloadMetadata }, id: Math.random().toString(), - url: this.basePreviewUrl + `/preview/${this.document.signed_key || this.document.signed_uuid || this.document.uuid}/${i}.jpg` + url: this.basePreviewUrl + `/preview/${this.document.signed_key || this.document.signed_uuid || this.document.uuid}/${i}${this.pagePreviewFormat}` }) }) }, diff --git a/app/views/submissions/show.html.erb b/app/views/submissions/show.html.erb index ffae0efa..335f1ff6 100644 --- a/app/views/submissions/show.html.erb +++ b/app/views/submissions/show.html.erb @@ -103,7 +103,7 @@ <% preview_images_index = document.preview_images.loaded? ? document.preview_images.index_by { |e| e.filename.base.to_i } : {} %> <% lazyload_metadata = document.preview_images.first&.metadata || Templates::ProcessDocument::US_LETTER_SIZE %> <% (document.metadata.dig('pdf', 'number_of_pages') || (document.preview_images.loaded? ? preview_images_index.size : document.preview_images.size)).times do |index| %> - <% page = preview_images_index[index] || page_blob_struct.new(metadata: lazyload_metadata, url: preview_document_page_path(document.signed_key, "#{index}.jpg")) %> + <% page = preview_images_index[index] || page_blob_struct.new(metadata: lazyload_metadata, url: preview_document_page_path(document.signed_key, "#{index}#{Templates::ProcessDocument::PREVIEW_FORMAT}")) %> " class="block before:border before:absolute before:top-0 before:bottom-0 before:left-0 before:right-0 before:rounded relative mb-4" style="container-type: size; aspect-ratio: <%= width = page.metadata['width'] %> / <%= height = page.metadata['height'] %>"> <%= ">
diff --git a/app/views/submit_form/show.html.erb b/app/views/submit_form/show.html.erb index 67c49999..0d9a229d 100644 --- a/app/views/submit_form/show.html.erb +++ b/app/views/submit_form/show.html.erb @@ -123,7 +123,7 @@ <% preview_images_index = document.preview_images.loaded? ? document.preview_images.index_by { |e| e.filename.base.to_i } : {} %> <% lazyload_metadata = document.preview_images.last&.metadata || Templates::ProcessDocument::US_LETTER_SIZE %> <% (document.metadata.dig('pdf', 'number_of_pages') || (document.preview_images.loaded? ? preview_images_index.size : document.preview_images.size)).times do |index| %> - <% page = preview_images_index[index] || page_blob_struct.new(metadata: lazyload_metadata, url: preview_document_page_path(document.signed_key, "#{index}.jpg")) %> + <% page = preview_images_index[index] || page_blob_struct.new(metadata: lazyload_metadata, url: preview_document_page_path(document.signed_key, "#{index}#{Templates::ProcessDocument::PREVIEW_FORMAT}")) %> <%= ">
diff --git a/lib/templates/process_document.rb b/lib/templates/process_document.rb index f4690fe5..af4e1697 100644 --- a/lib/templates/process_document.rb +++ b/lib/templates/process_document.rb @@ -4,6 +4,7 @@ module Templates module ProcessDocument DPI = 200 FORMAT = '.png' + PREVIEW_FORMAT = '.jpg' ATTACHMENT_NAME = 'preview_images' BMP_REGEXP = %r{\Aimage/(?:bmp|x-bmp|x-ms-bmp)\z} @@ -205,7 +206,7 @@ module Templates def generate_pdf_preview_from_file(attachment, file_path, page_number) doc = Pdfium::Document.open_file(file_path) - blob = build_and_upload_blob(doc, page_number, '.jpeg') + blob = build_and_upload_blob(doc, page_number, PREVIEW_FORMAT) ApplicationRecord.no_touching do ActiveStorage::Attachment.create!(