From 2a7c37943a66cbbfe40df57c1d42434ea64abbee Mon Sep 17 00:00:00 2001 From: as-op Date: Wed, 26 Jun 2024 16:33:15 +0200 Subject: [PATCH] chore: bump md-to-pdf to v0.1.1 --- Gemfile | 2 +- Gemfile.lock | 8 +-- .../work_package/pdf_export/markdown.rb | 5 +- .../work_package/pdf_export/schema.json | 64 ++++++++++++++++++- .../work_package/pdf_export/standard.yml | 56 ++++++++++++++++ .../design/pdf-export-styles/README.md | 59 ++++++++++++++--- 6 files changed, 177 insertions(+), 17 deletions(-) diff --git a/Gemfile b/Gemfile index 35b9e21a8ad..d3e1e63a614 100644 --- a/Gemfile +++ b/Gemfile @@ -158,7 +158,7 @@ gem "structured_warnings", "~> 0.4.0" gem "airbrake", "~> 13.0.0", require: false gem "markly", "~> 0.10" # another markdown parser like commonmarker, but with AST support used in PDF export -gem "md_to_pdf", git: "https://github.com/opf/md-to-pdf", ref: "8772c791a21819751c0d111be903b3b44ef7d862" +gem "md_to_pdf", git: "https://github.com/opf/md-to-pdf", ref: "32603f09a249999a00e8ca23eb17215b46a26c0f" gem "prawn", "~> 2.4" gem "ttfunk", "~> 1.7.0" # remove after https://github.com/prawnpdf/prawn/issues/1346 resolved. diff --git a/Gemfile.lock b/Gemfile.lock index ba216ee21a8..e0bc64c2c38 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,16 +8,16 @@ GIT GIT remote: https://github.com/opf/md-to-pdf - revision: 8772c791a21819751c0d111be903b3b44ef7d862 - ref: 8772c791a21819751c0d111be903b3b44ef7d862 + revision: 32603f09a249999a00e8ca23eb17215b46a26c0f + ref: 32603f09a249999a00e8ca23eb17215b46a26c0f specs: - md_to_pdf (0.0.27) + md_to_pdf (0.1.1) color_conversion (~> 0.1) front_matter_parser (~> 1.0) json-schema (~> 4.3) markly (~> 0.10) matrix (~> 0.4) - nokogiri (~> 1.1) + nokogiri (~> 1.16) prawn (~> 2.4) prawn-table (~> 0.2) text-hyphen (~> 1.5) diff --git a/app/models/work_package/pdf_export/markdown.rb b/app/models/work_package/pdf_export/markdown.rb index 84cd5b1c54a..03bdde5f746 100644 --- a/app/models/work_package/pdf_export/markdown.rb +++ b/app/models/work_package/pdf_export/markdown.rb @@ -33,9 +33,10 @@ module WorkPackage::PDFExport::Markdown include MarkdownToPDF::Core include MarkdownToPDF::Parser - def initialize(styling_yml) + def initialize(styling_yml, pdf) @styles = MarkdownToPDF::Styles.new(styling_yml) init_options({ auto_generate_header_ids: false }) + pdf_init_md2pdf_fonts(pdf) # @hyphens = Hyphen.new('en', false) end @@ -96,7 +97,7 @@ module WorkPackage::PDFExport::Markdown end def write_markdown!(work_package, markdown) - md2pdf = MD2PDF.new(styles.wp_markdown_styling_yml) + md2pdf = MD2PDF.new(styles.wp_markdown_styling_yml, pdf) md2pdf.draw_markdown(markdown, pdf, ->(src) { with_images? ? attachment_image_filepath(work_package, src) : nil }) diff --git a/app/models/work_package/pdf_export/schema.json b/app/models/work_package/pdf_export/schema.json index 3546fef553d..50c64700b44 100644 --- a/app/models/work_package/pdf_export/schema.json +++ b/app/models/work_package/pdf_export/schema.json @@ -392,7 +392,7 @@ "group_heading" : { "type" : "object", "title" : "Overview group heading", - "description" : "Styling for the group lavel if grouping is activated", + "description" : "Styling for the group label if grouping is activated", "x-example" : { "group_heading" : { "size" : 11, @@ -981,6 +981,9 @@ "task_list_point" : { "title" : "Markdown task list point", "$ref" : "#/$defs/task_list_point" + }, + "alerts": { + "$ref": "#/$defs/alerts" } }, "patternProperties" : { @@ -1744,6 +1747,65 @@ "type" : "boolean" } } + }, + "alert": { + "type": "object", + "title": "Alert", + "description": "Styling to denote a quote as alert box", + "x-example": { + "ALERT": { + "alert_color": "f4f9ff", + "border_color": "f4f9ff", + "border_width": 2, + "no_border_right": true, + "no_border_left": false, + "no_border_bottom": true, + "no_border_top": true + } + }, + "properties": { + "background_color": { + "$ref": "#/$defs/color" + }, + "alert_color": { + "$ref": "#/$defs/color" + } + }, + "allOf": [ + { + "$ref": "#/$defs/font" + }, + { + "$ref": "#/$defs/border" + }, + { + "$ref": "#/$defs/padding" + }, + { + "$ref": "#/$defs/margin" + } + ] + }, + "alerts": { + "type": "object", + "title": "alert boxes (styled blockquotes)", + "properties": { + "NOTE": { + "$ref": "#/$defs/alert" + }, + "TIP": { + "$ref": "#/$defs/alert" + }, + "WARNING": { + "$ref": "#/$defs/alert" + }, + "IMPORTANT": { + "$ref": "#/$defs/alert" + }, + "CAUTION": { + "$ref": "#/$defs/alert" + } + } } } } diff --git a/app/models/work_package/pdf_export/standard.yml b/app/models/work_package/pdf_export/standard.yml index 9a514dbceba..915d6dd37c2 100644 --- a/app/models/work_package/pdf_export/standard.yml +++ b/app/models/work_package/pdf_export/standard.yml @@ -192,6 +192,62 @@ work_package: size: 8 border_width: 0.25 padding: 5 + alerts: + NOTE: + border_color: '0969da' + alert_color: '0969da' + padding: '4mm' + size: 10 + styles: [ ] + border_width: 2 + no_border_right: true + no_border_left: false + no_border_bottom: true + no_border_top: true + TIP: + border_color: '1a7f37' + alert_color: '1a7f37' + padding: '4mm' + size: 10 + styles: [ ] + border_width: 2 + no_border_right: true + no_border_left: false + no_border_bottom: true + no_border_top: true + IMPORTANT: + border_color: '8250df' + alert_color: '8250df' + padding: '4mm' + size: 10 + styles: [ ] + border_width: 2 + no_border_right: true + no_border_left: false + no_border_bottom: true + no_border_top: true + WARNING: + border_color: 'bf8700' + alert_color: 'bf8700' + padding: '4mm' + size: 10 + styles: [ ] + border_width: 2 + no_border_right: true + no_border_left: false + no_border_bottom: true + no_border_top: true + CAUTION: + border_color: 'd1242f' + alert_color: 'd1242f' + size: 10 + styles: [ ] + padding: '4mm' + border_width: 2 + no_border_right: true + no_border_left: false + no_border_bottom: true + no_border_top: true cover: header: diff --git a/docs/system-admin-guide/design/pdf-export-styles/README.md b/docs/system-admin-guide/design/pdf-export-styles/README.md index 0ab461f0659..dce256aff5b 100644 --- a/docs/system-admin-guide/design/pdf-export-styles/README.md +++ b/docs/system-admin-guide/design/pdf-export-styles/README.md @@ -15,6 +15,34 @@ This document describes the style settings format for the [PDF Export styling fi | `cover` | **Cover page**
Styling for the cover page of the PDF report export
See [Cover page](#cover-page) | object | | `overview` | **Overview**
Styling for the PDF table export
See [Overview](#overview) | object | +## Alert + +Styling to denote a quote as alert box + +Key: `alert` + +Example: + +```yaml +ALERT: + alert_color: f4f9ff + border_color: f4f9ff + border_width: 2 + no_border_right: true + no_border_left: false + no_border_bottom: true + no_border_top: true +``` + +| Key | Description | Data type | +| - | - | - | +| `background_color` | **Color**
A color in RRGGBB format
Example: `F0F0F0` | string | +| `alert_color` | **Color**
A color in RRGGBB format
Example: `F0F0F0` | string | +| … | See [Font properties](#font-properties) | | +| … | See [Border Properties](#border-properties) | | +| … | See [Padding Properties](#padding-properties) | | +| … | See [Margin properties](#margin-properties) | | + ## Border Properties Properties to set borders @@ -287,6 +315,7 @@ markdown: | `unordered_list_point` | **Markdown unordered list point**
Default styling for unordered list points on all levels.
use unordered_list_point_`x` as key for unordered list points level `x`.
See [Markdown unordered list point](#markdown-unordered-list-point) | object | | `task_list` | **Markdown task list**
See [Markdown unordered list](#markdown-unordered-list) | object | | `task_list_point` | **Markdown task list point**
See [Markdown task list point](#markdown-task-list-point) | object | +| `alerts` | **alert boxes (styled blockquotes)**
See [alert boxes (styled blockquotes)](#alert-boxes-styled-blockquotes) | object | | `ordered_list_point_1`
`ordered_list_point_2`
`ordered_list_point_x` | Markdown ordered list point level
See [Markdown ordered list point](#markdown-ordered-list-point) | object | | `ordered_list_1`
`ordered_list_2`
`ordered_list_x` | Markdown ordered list level
See [Markdown ordered list](#markdown-ordered-list) | object | | `unordered_list_point_1`
`unordered_list_point_2`
`unordered_list_point_x` | Markdown unordered list point level
See [Markdown unordered list point](#markdown-unordered-list-point) | object | @@ -621,14 +650,14 @@ overview: table: {} ``` -| Key | Description | Data type | -|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------|-----------| -| `group_heading` | **Overview group heading**
Styling for the group label if grouping is activated
See [Overview group heading](#overview-group-heading) | object | -| `table` | **Overview table**
See [Overview table](#overview-table) | object | +| Key | Description | Data type | +| - | - | - | +| `group_heading` | **Overview group heading**
Styling for the group lavel if grouping is activated
See [Overview group heading](#overview-group-heading) | object | +| `table` | **Overview table**
See [Overview table](#overview-table) | object | ## Overview group heading -Styling for the group label if grouping is activated +Styling for the group lavel if grouping is activated Key: `group_heading` @@ -1092,10 +1121,10 @@ subject: margin_bottom: 10 ``` -| Key | Description | Data type | -|-----|---------------------------------------------|-----------| -| … | See [Font properties](#font-properties) | | -| … | See [Margin properties](#margin-properties) | | +| Key | Description | Data type | +| - | - | - | +| … | See [Font properties](#font-properties) | | +| … | See [Margin properties](#margin-properties) | | ## Work package subject level @@ -1123,6 +1152,18 @@ subject_level_3: | … | See [Font properties](#font-properties) | | | … | See [Margin properties](#margin-properties) | | +## alert boxes (styled blockquotes) + +Key: `alerts` + +| Key | Description | Data type | +| - | - | - | +| `NOTE` | **Alert**
Styling to denote a quote as alert box
See [Alert](#alert) | object | +| `TIP` | **Alert**
Styling to denote a quote as alert box
See [Alert](#alert) | object | +| `WARNING` | **Alert**
Styling to denote a quote as alert box
See [Alert](#alert) | object | +| `IMPORTANT` | **Alert**
Styling to denote a quote as alert box
See [Alert](#alert) | object | +| `CAUTION` | **Alert**
Styling to denote a quote as alert box
See [Alert](#alert) | object | + ## Units available units are