diff options
| author | Dan Allen <dan.j.allen@gmail.com> | 2020-08-24 23:48:21 -0600 |
|---|---|---|
| committer | Dan Allen <dan.j.allen@gmail.com> | 2020-08-25 01:10:42 -0600 |
| commit | 9fd82ada6a774f14ab5c64e4e7ea3dde84bbca9b (patch) | |
| tree | 962bb84a34a6c451147a328d52be5106c5ed378a /lib | |
| parent | e0b408e80bddffad71dd05d3f8c19db9fd4751b9 (diff) | |
use cleaner solution for #1735
patch generate_margin_box method
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/asciidoctor/pdf/converter.rb | 3 | ||||
| -rw-r--r-- | lib/asciidoctor/pdf/ext/prawn/extensions.rb | 21 |
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 |
