diff --git a/app/models/work_package/pdf_export/common.rb b/app/models/work_package/pdf_export/common.rb index 0529db5a499..893cf632255 100644 --- a/app/models/work_package/pdf_export/common.rb +++ b/app/models/work_package/pdf_export/common.rb @@ -66,6 +66,19 @@ module WorkPackage::PdfExport::Common @cell_padding ||= [2, 5, 2, 5] end + def configure_markup + # Do not attempt to fetch images. + # Fetching images can cause errors e.g. a 403 is returned when attempting to fetch from aws with + # a no longer valid token. + # Such an error would cause the whole export to error. + pdf.markup_options = { + image: { + loader: ->(_src) { nil }, + placeholder: "[#{I18n.t('export.image.omitted')}]" + } + } + end + ## # Writes the formatted work package description into the document. # diff --git a/app/models/work_package/pdf_export/work_package_list_to_pdf.rb b/app/models/work_package/pdf_export/work_package_list_to_pdf.rb index 7d378f472d3..dcfbb103dfe 100644 --- a/app/models/work_package/pdf_export/work_package_list_to_pdf.rb +++ b/app/models/work_package/pdf_export/work_package_list_to_pdf.rb @@ -42,6 +42,11 @@ class WorkPackage::PdfExport::WorkPackageListToPdf < WorkPackage::Exporter::Base self.pdf = get_pdf(current_language) + configure_page_size + configure_markup + end + + def configure_page_size pdf.options[:page_size] = 'EXECUTIVE' pdf.options[:page_layout] = :landscape end @@ -119,7 +124,7 @@ class WorkPackage::PdfExport::WorkPackageListToPdf < WorkPackage::Exporter::Base def text_column?(column) column.is_a?(Queries::WorkPackages::Columns::CustomFieldColumn) && - ['string', 'text'].include?(column.custom_field.field_format) + %w(string text).include?(column.custom_field.field_format) end def write_headers! diff --git a/app/models/work_package/pdf_export/work_package_to_pdf.rb b/app/models/work_package/pdf_export/work_package_to_pdf.rb index d99dc35b4db..ce1f712e0e0 100644 --- a/app/models/work_package/pdf_export/work_package_to_pdf.rb +++ b/app/models/work_package/pdf_export/work_package_to_pdf.rb @@ -38,6 +38,8 @@ class WorkPackage::PdfExport::WorkPackageToPdf < WorkPackage::Exporter::Base super self.pdf = get_pdf(current_language) + + configure_markup end def render! diff --git a/config/locales/en.yml b/config/locales/en.yml index b87b01f1a23..3c8459a4dee 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1141,6 +1141,8 @@ en: pdf_with_descriptions: "PDF with descriptions" pdf_with_descriptions_and_attachments: "PDF with descriptions and attachments" pdf_with_attachments: "PDF with attachments" + image: + omitted: "Image not exported." extraction: available: diff --git a/lib/open_project/text_formatting/matchers/link_handlers/colon_separator.rb b/lib/open_project/text_formatting/matchers/link_handlers/colon_separator.rb index aac817d68cf..536c618d2e4 100644 --- a/lib/open_project/text_formatting/matchers/link_handlers/colon_separator.rb +++ b/lib/open_project/text_formatting/matchers/link_handlers/colon_separator.rb @@ -107,12 +107,12 @@ module OpenProject::TextFormatting::Matchers anchor = $5 link_to h("#{matcher.project_prefix}#{matcher.prefix}:#{oid}"), named_route(:entry_revision_project_repository, - action: 'entry', - project_id: project.identifier, - repo_path: path.to_s, - rev: rev, - anchor: anchor, - format: (matcher.prefix == 'export' ? 'raw' : nil)), + action: 'entry', + project_id: project.identifier, + repo_path: path.to_s, + rev: rev, + anchor: anchor, + format: (matcher.prefix == 'export' ? 'raw' : nil)), class: (matcher.prefix == 'export' ? 'source download' : 'source') end end