diff --git a/Gemfile b/Gemfile
index 2bb2912..ae0eaaa 100644
--- a/Gemfile
+++ b/Gemfile
@@ -52,6 +52,7 @@ gem 'caxlsx'
gem 'caxlsx_rails'
gem 'image_processing', '~> 1.2'
gem 'pagy', '~> 9.0'
+gem 'prawn-markup'
gem 'prawn-rails'
gem 'sablon'
diff --git a/Gemfile.lock b/Gemfile.lock
index 5acfb48..be83bc7 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -188,6 +188,10 @@ GEM
matrix (~> 0.4)
pdf-core (~> 0.10.0)
ttfunk (~> 1.8)
+ prawn-markup (1.0.0)
+ nokogiri
+ prawn
+ prawn-table
prawn-rails (1.4.2)
actionview (>= 3.1.0)
prawn
@@ -352,6 +356,7 @@ DEPENDENCIES
jbuilder
jsbundling-rails
pagy (~> 9.0)
+ prawn-markup
prawn-rails
puma (>= 5.0)
rails (~> 7.1.3, >= 7.1.3.4)
diff --git a/app/helpers/pdf_helper.rb b/app/helpers/pdf_helper.rb
index 9ebed48..825b788 100644
--- a/app/helpers/pdf_helper.rb
+++ b/app/helpers/pdf_helper.rb
@@ -1,8 +1,17 @@
module PdfHelper
def prepare_rich_text(rich_text)
+ return rich_text
+
+ { del: 'strikethrough' }.each do |tag, replacement|
+ rich_text = rich_text.to_s.gsub("<#{tag}", "<#{replacement}")
+ rich_text = rich_text.to_s.gsub("#{tag}>", "#{replacement}>")
+ end
+
%w[div p del blockquote pre code].each do |tag|
rich_text = rich_text.to_s.gsub(%r{<#{tag}.*?>|#{tag}>}, '')
end
+ rich_text.gsub!(/
/, '')
+ rich_text.gsub!(%r{}, '
')
rich_text
end
end
diff --git a/app/views/reports/show.pdf.prawn b/app/views/reports/show.pdf.prawn
index 120e0a0..349c641 100644
--- a/app/views/reports/show.pdf.prawn
+++ b/app/views/reports/show.pdf.prawn
@@ -1,14 +1,17 @@
prawn_document do |pdf|
- pdf.text @report.name
+ pdf.markup_options = {
+ heading1: { style: :bold, size: 14, margin_bottom: 10, margin_top: 20 }
+ }
+ pdf.text @report.name, size: 22, style: :bold, align: :center
@report.elements.each do |element|
- pdf.text element.title
+ pdf.text element.title, size: 16, style: :bold
pdf.text element.path
- pdf.text prepare_rich_text(element.description_html), inline_format: true
+ pdf.markup prepare_rich_text(element.description_html.to_s), inline_format: true
element.success_criteria.each do |success_criterion|
- pdf.text success_criterion.title
- pdf.text prepare_rich_text(success_criterion.description_html), inline_format: true
- pdf.text prepare_rich_text(success_criterion.comment_html), inline_format: true
+ pdf.text success_criterion.title, size: 14, style: :bold
+ pdf.markup prepare_rich_text(success_criterion.description_html.to_s), inline_format: true
+ pdf.markup prepare_rich_text(success_criterion.comment_html.to_s), inline_format: true
end
end
end