summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2020-08-24 23:48:21 -0600
committerDan Allen <dan.j.allen@gmail.com>2020-08-25 01:10:42 -0600
commit9fd82ada6a774f14ab5c64e4e7ea3dde84bbca9b (patch)
tree962bb84a34a6c451147a328d52be5106c5ed378a /lib
parente0b408e80bddffad71dd05d3f8c19db9fd4751b9 (diff)
use cleaner solution for #1735
patch generate_margin_box method
Diffstat (limited to 'lib')
-rw-r--r--lib/asciidoctor/pdf/converter.rb3
-rw-r--r--lib/asciidoctor/pdf/ext/prawn/extensions.rb21
2 files changed, 21 insertions, 3 deletions
diff --git a/lib/asciidoctor/pdf/converter.rb b/lib/asciidoctor/pdf/converter.rb
index 20387b6f..a0d48797 100644
--- a/lib/asciidoctor/pdf/converter.rb
+++ b/lib/asciidoctor/pdf/converter.rb
@@ -624,10 +624,7 @@ module Asciidoctor
end
if index_section
- old_margin_box = @margin_box.dup
outdent_section { convert_index_section sect }
- # NOTE: column_box can mess with margin_box, so restore it
- @margin_box = old_margin_box
else
traverse sect
end
diff --git a/lib/asciidoctor/pdf/ext/prawn/extensions.rb b/lib/asciidoctor/pdf/ext/prawn/extensions.rb
index 84b4f471..5f27df45 100644
--- a/lib/asciidoctor/pdf/ext/prawn/extensions.rb
+++ b/lib/asciidoctor/pdf/ext/prawn/extensions.rb
@@ -74,6 +74,27 @@ module Asciidoctor
page_height - page_margin_top - page_margin_bottom
end
+ # remove once fixed upstream; see https://github.com/prawnpdf/prawn/pull/1122
+ def generate_margin_box
+ page_w, page_h = (page = state.page).dimensions.slice 2, 2
+ page_m = page.margins
+ prev_margin_box, @margin_box = @margin_box, (::Prawn::Document::BoundingBox.new self, nil, [page_m[:left], page_h - page_m[:top]], width: page_w - page_m[:left] - page_m[:right], height: page_h - page_m[:top] - page_m[:bottom])
+
+ # update bounding box if not flowing from the previous page
+ unless @bounding_box && @bounding_box.parent
+ prev_margin_box = @bounding_box
+ @bounding_box = @margin_box
+ end
+
+ # maintains indentation settings across page breaks
+ if prev_margin_box
+ @margin_box.add_left_padding prev_margin_box.total_left_padding
+ @margin_box.add_right_padding prev_margin_box.total_right_padding
+ end
+
+ nil
+ end
+
# Set the margins for the current page.
#
def set_page_margin margin