asciidoctor-pdf 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +13 -0
- data/README.adoc +1 -3
- data/lib/asciidoctor/pdf/converter.rb +20 -17
- data/lib/asciidoctor/pdf/ext/prawn/document/column_box.rb +10 -7
- data/lib/asciidoctor/pdf/ext/prawn/extensions.rb +10 -3
- data/lib/asciidoctor/pdf/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7753392586bac4a044601fefa9ecb58745e02fc37434dd5a26e020692890e65
|
4
|
+
data.tar.gz: 301fe3fef546588aacba4ca8d9c5afd91d4a19a816f07a8fcc66121c8f58f626
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b26fe1f74b22bd73eba166190d21afebafdc1630dba5fee8174aa946b463d81b7e620cb8f400e803507f050c6dd48a1d732a1273a78fc1cd0e958da69a0a3c9c
|
7
|
+
data.tar.gz: 15cd75342088585a51f19cb342a8023fbc2aa6d0cd89fff72385370172059ac10c98fa51b8126845ce40436fcd89dc0c1f47aa763df14dad24ba2bcd95f92205
|
data/CHANGELOG.adoc
CHANGED
@@ -5,6 +5,19 @@
|
|
5
5
|
This document provides a high-level view of the changes to the {project-name} by release.
|
6
6
|
For a detailed view of what has changed, refer to the {url-repo}/commits/main[commit history] on GitHub.
|
7
7
|
|
8
|
+
== 2.1.3 (2022-06-23) - @mojavelinux
|
9
|
+
|
10
|
+
Bug Fixes::
|
11
|
+
|
12
|
+
* interpret `start-at` theme keys with value `1` correctly (as `1` instead of `2`) (#2255)
|
13
|
+
* restore column layout after importing page(s) from PDF (#2253)
|
14
|
+
* fix crash when border color is transparent (`thematic-break-border-color`, `admonition-column-rule`, `quote-border-color`, `verse-border-color`)
|
15
|
+
* ensure page margin is restored after imported page
|
16
|
+
|
17
|
+
=== Details
|
18
|
+
|
19
|
+
{url-repo}/releases/tag/v2.1.3[git tag] | {url-repo}/compare/v2.1.2\...v2.1.3[full diff]
|
20
|
+
|
8
21
|
== 2.1.2 (2022-06-17) - @mojavelinux
|
9
22
|
|
10
23
|
Bug Fixes::
|
data/README.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Asciidoctor PDF: A native PDF converter for AsciiDoc
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>
|
3
|
-
v2.1.
|
3
|
+
v2.1.3, 2022-06-23
|
4
4
|
// Settings:
|
5
5
|
:experimental:
|
6
6
|
:idprefix:
|
@@ -22,8 +22,6 @@ endif::[]
|
|
22
22
|
// Aliases:
|
23
23
|
:project-name: Asciidoctor PDF
|
24
24
|
:project-handle: asciidoctor-pdf
|
25
|
-
// Variables:
|
26
|
-
:release-line: 2.1.x
|
27
25
|
// URLs:
|
28
26
|
:url-gem: https://rubygems.org/gems/asciidoctor-pdf
|
29
27
|
:url-project: https://github.com/asciidoctor/asciidoctor-pdf
|
@@ -213,7 +213,7 @@ module Asciidoctor
|
|
213
213
|
first_page_offset = has_title_page ? zero_page_offset.next : zero_page_offset
|
214
214
|
body_offset = (body_start_page_number = page_number) - 1
|
215
215
|
if ::Integer === (running_content_start_at = @theme.running_content_start_at)
|
216
|
-
running_content_body_offset = body_offset + [running_content_start_at.pred,
|
216
|
+
running_content_body_offset = body_offset + [running_content_start_at.pred, 0].max
|
217
217
|
running_content_start_at = 'body'
|
218
218
|
else
|
219
219
|
running_content_body_offset = body_offset
|
@@ -227,7 +227,7 @@ module Asciidoctor
|
|
227
227
|
end
|
228
228
|
end
|
229
229
|
if ::Integer === (page_numbering_start_at = @theme.page_numbering_start_at)
|
230
|
-
page_numbering_body_offset = body_offset + [page_numbering_start_at.pred,
|
230
|
+
page_numbering_body_offset = body_offset + [page_numbering_start_at.pred, 0].max
|
231
231
|
page_numbering_start_at = 'body'
|
232
232
|
else
|
233
233
|
page_numbering_body_offset = body_offset
|
@@ -263,12 +263,12 @@ module Asciidoctor
|
|
263
263
|
else
|
264
264
|
body_offset = body_start_page_number - 1
|
265
265
|
if ::Integer === (running_content_start_at = @theme.running_content_start_at)
|
266
|
-
running_content_body_offset = body_offset + [running_content_start_at.pred,
|
266
|
+
running_content_body_offset = body_offset + [running_content_start_at.pred, 0].max
|
267
267
|
else
|
268
268
|
running_content_body_offset = body_offset
|
269
269
|
end
|
270
270
|
if ::Integer === (page_numbering_start_at = @theme.page_numbering_start_at)
|
271
|
-
page_numbering_body_offset = body_offset + [page_numbering_start_at.pred,
|
271
|
+
page_numbering_body_offset = body_offset + [page_numbering_start_at.pred, 0].max
|
272
272
|
elsif page_numbering_start_at == 'cover' && has_front_cover
|
273
273
|
page_numbering_body_offset = 0
|
274
274
|
else
|
@@ -371,8 +371,6 @@ module Asciidoctor
|
|
371
371
|
if (page_margin_inner = theme.page_margin_inner)
|
372
372
|
page_margin_recto[3] = page_margin_verso[1] = page_margin_inner
|
373
373
|
end
|
374
|
-
# NOTE: prepare scratch document to use page margin from recto side (which has same width as verso side)
|
375
|
-
set_page_margin page_margin_recto unless page_margin_recto == page_margin
|
376
374
|
else
|
377
375
|
@ppbook = nil
|
378
376
|
end
|
@@ -581,6 +579,7 @@ module Asciidoctor
|
|
581
579
|
end
|
582
580
|
|
583
581
|
def prepare_theme theme
|
582
|
+
theme.base_border_color = nil if theme.base_border_color == 'transparent'
|
584
583
|
theme.base_font_color ||= '000000'
|
585
584
|
theme.base_font_size ||= 12
|
586
585
|
theme.base_font_style = theme.base_font_style&.to_sym || :normal
|
@@ -943,7 +942,7 @@ module Asciidoctor
|
|
943
942
|
if extent
|
944
943
|
label_height = extent.single_page_height || cursor
|
945
944
|
if (rule_width = @theme.admonition_column_rule_width || 0) > 0 &&
|
946
|
-
(rule_color =
|
945
|
+
(rule_color = resolve_theme_color :admonition_column_rule_color, @theme.base_border_color, nil)
|
947
946
|
rule_style = @theme.admonition_column_rule_style&.to_sym || :solid
|
948
947
|
float do
|
949
948
|
extent.each_page do |first_page, last_page|
|
@@ -1273,7 +1272,7 @@ module Asciidoctor
|
|
1273
1272
|
category = node.context == :quote ? :quote : :verse
|
1274
1273
|
# NOTE: b_width and b_left_width are mutually exclusive
|
1275
1274
|
if (b_left_width = @theme[%(#{category}_border_left_width)]) && b_left_width > 0
|
1276
|
-
b_color =
|
1275
|
+
b_left_width = nil unless (b_color = resolve_theme_color %(#{category}_border_color), @theme.base_border_color, nil)
|
1277
1276
|
else
|
1278
1277
|
b_left_width = nil
|
1279
1278
|
b_width = nil if (b_width = @theme[%(#{category}_border_width)]) == 0
|
@@ -2341,9 +2340,11 @@ module Asciidoctor
|
|
2341
2340
|
|
2342
2341
|
def convert_thematic_break node
|
2343
2342
|
pad_box @theme.thematic_break_padding || [@theme.thematic_break_margin_top, 0] do
|
2344
|
-
|
2345
|
-
|
2346
|
-
|
2343
|
+
if (b_color = resolve_theme_color :thematic_break_border_color)
|
2344
|
+
stroke_horizontal_rule b_color,
|
2345
|
+
line_width: @theme.thematic_break_border_width,
|
2346
|
+
line_style: (@theme.thematic_break_border_style&.to_sym || :solid)
|
2347
|
+
end
|
2347
2348
|
end
|
2348
2349
|
conceal_page_top { theme_margin :block, :bottom, (next_enclosed_block node) }
|
2349
2350
|
end
|
@@ -4817,18 +4818,17 @@ module Asciidoctor
|
|
4817
4818
|
end
|
4818
4819
|
|
4819
4820
|
# NOTE: init_page is called within a float context; this will suppress prawn-svg messing with the cursor
|
4820
|
-
# NOTE: init_page is not called for imported pages,
|
4821
|
+
# NOTE: init_page is not called for imported pages, cover pages, image pages, and pages in the scratch document
|
4821
4822
|
def init_page *_args
|
4822
4823
|
next_page_side = page_side nil, @folio_placement[:inverted]
|
4823
4824
|
if @media == 'prepress' && (next_page_margin = @page_margin_by_side[page_number == 1 ? :cover : next_page_side]) != page_margin
|
4824
4825
|
set_page_margin next_page_margin
|
4825
4826
|
end
|
4826
4827
|
unless @page_bg_color == 'FFFFFF'
|
4827
|
-
tare = true
|
4828
4828
|
fill_absolute_bounds @page_bg_color
|
4829
|
+
tare = true
|
4829
4830
|
end
|
4830
4831
|
if (bg_image_path, bg_image_opts = @page_bg_image[next_page_side])
|
4831
|
-
tare = true
|
4832
4832
|
begin
|
4833
4833
|
if bg_image_opts[:format] == 'pdf'
|
4834
4834
|
# NOTE: pages that use PDF for the background do not support a background color or running content
|
@@ -4837,6 +4837,7 @@ module Asciidoctor
|
|
4837
4837
|
else
|
4838
4838
|
canvas { image bg_image_path, ({ position: :center, vposition: :center }.merge bg_image_opts) }
|
4839
4839
|
end
|
4840
|
+
tare = true
|
4840
4841
|
rescue
|
4841
4842
|
facing_page_side = (PageSides - [next_page_side])[0]
|
4842
4843
|
@page_bg_image[facing_page_side] = nil if @page_bg_image[facing_page_side] == @page_bg_image[next_page_side]
|
@@ -5031,10 +5032,8 @@ module Asciidoctor
|
|
5031
5032
|
# QUESTION: should we pass a category as an argument?
|
5032
5033
|
# QUESTION: should we make this a method on the theme ostruct? (e.g., @theme.resolve_color key, fallback)
|
5033
5034
|
def resolve_theme_color key, fallback_color = nil, transparent_color = fallback_color
|
5034
|
-
if (color = @theme[key])
|
5035
|
+
if (color = @theme[key] || fallback_color)
|
5035
5036
|
color == 'transparent' ? transparent_color : color
|
5036
|
-
else
|
5037
|
-
fallback_color
|
5038
5037
|
end
|
5039
5038
|
end
|
5040
5039
|
|
@@ -5114,6 +5113,10 @@ module Asciidoctor
|
|
5114
5113
|
end
|
5115
5114
|
|
5116
5115
|
def init_scratch originator
|
5116
|
+
if @media == 'prepress' && page_margin != (page_margin_recto = @page_margin_by_side[:recto])
|
5117
|
+
# NOTE: prepare scratch document to use page margin from recto side (which has same width as verso side)
|
5118
|
+
set_page_margin page_margin_recto
|
5119
|
+
end
|
5117
5120
|
@scratch_prototype = originator.instance_variable_get :@scratch_prototype
|
5118
5121
|
@tmp_files = originator.instance_variable_get :@tmp_files
|
5119
5122
|
text_formatter.scratch = true
|
@@ -6,20 +6,23 @@ Prawn::Document::ColumnBox.prepend (Module.new do
|
|
6
6
|
def move_past_bottom
|
7
7
|
(doc = @document).y = @y
|
8
8
|
return if (@current_column = (@current_column + 1) % @columns) > 0
|
9
|
-
|
10
|
-
if (
|
11
|
-
@y = par.absolute_top
|
12
|
-
@height = par.height unless stretchy?
|
13
|
-
end
|
9
|
+
parent_ = @parent
|
10
|
+
reset_top parent_ if (reflow_at = @reflow_margins) && (reflow_at == true || reflow_at > doc.page_number)
|
14
11
|
initial_margins = doc.page.margins
|
15
|
-
|
12
|
+
parent_.move_past_bottom
|
16
13
|
if doc.page.margins != initial_margins
|
17
|
-
doc.bounds = self.class.new doc,
|
14
|
+
doc.bounds = self.class.new doc, parent_, [(margin_box = doc.margin_box).absolute_left, @y],
|
18
15
|
columns: @columns, reflow_margins: @reflow_margins, spacer: @spacer, width: margin_box.width, height: @height
|
19
16
|
end
|
20
17
|
nil
|
21
18
|
end
|
22
19
|
|
20
|
+
def reset_top parent_ = @parent
|
21
|
+
@current_column = 0
|
22
|
+
@height = parent_.height unless stretchy?
|
23
|
+
@y = parent_.absolute_top
|
24
|
+
end
|
25
|
+
|
23
26
|
# Rearranges the column box into a single column, where the original columns are in a single file. Used
|
24
27
|
# for the purpose of computing the extent of content in a scratch document.
|
25
28
|
def single_file
|
@@ -924,6 +924,8 @@ module Asciidoctor
|
|
924
924
|
def import_page file, options = {}
|
925
925
|
prev_page_layout = page.layout
|
926
926
|
prev_page_size = page.size
|
927
|
+
prev_page_margin = page_margin
|
928
|
+
prev_bounds = bounds
|
927
929
|
state.compress = false if state.compress # can't use compression if using template
|
928
930
|
prev_text_rendering_mode = (defined? @text_rendering_mode) ? @text_rendering_mode : nil
|
929
931
|
delete_current_page if options[:replace]
|
@@ -936,11 +938,15 @@ module Asciidoctor
|
|
936
938
|
# NOTE: set page size & layout explicitly in case imported page differs
|
937
939
|
# I'm not sure it's right to start a new page here, but unfortunately there's no other
|
938
940
|
# way atm to prevent the size & layout of the imported page from affecting subsequent pages
|
939
|
-
|
941
|
+
if options.fetch :advance, true
|
942
|
+
advance_page layout: prev_page_layout, margin: prev_page_margin, size: prev_page_size
|
943
|
+
(@bounding_box = prev_bounds).reset_top if ColumnBox === prev_bounds
|
944
|
+
end
|
940
945
|
elsif options.fetch :advance_if_missing, true
|
941
946
|
delete_current_page
|
942
947
|
# NOTE: see previous comment
|
943
|
-
advance_page
|
948
|
+
advance_page layout: prev_page_layout, margin: prev_page_margin, size: prev_page_size
|
949
|
+
@y = (@bounding_box = prev_bounds).reset_top if ColumnBox === prev_bounds
|
944
950
|
else
|
945
951
|
delete_current_page
|
946
952
|
end
|
@@ -1112,7 +1118,8 @@ module Asciidoctor
|
|
1112
1118
|
# This method performs all work in a scratch document (or documents). It begins by starting a
|
1113
1119
|
# new page in the scratch document, first creating the scratch document if necessary. It then
|
1114
1120
|
# applies all the settings from the main document to the scratch document that impact
|
1115
|
-
# rendering. This includes the bounds, the cursor position, and the font settings.
|
1121
|
+
# rendering. This includes the bounds, the cursor position, and the font settings. This method
|
1122
|
+
# assumes that the content area remains constant when content flows from one page to the next.
|
1116
1123
|
#
|
1117
1124
|
# From this point, the number of attempts the method makes is determined by the value of the
|
1118
1125
|
# keep_together keyword parameter. If the value is true (or the parent document is inhibiting
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor-pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Allen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-06-
|
12
|
+
date: 2022-06-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: asciidoctor
|