diff options
| -rw-r--r-- | CHANGELOG.adoc | 1 | ||||
| -rw-r--r-- | lib/asciidoctor/pdf/converter.rb | 10 | ||||
| -rw-r--r-- | spec/page_spec.rb | 17 |
3 files changed, 25 insertions, 3 deletions
diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 5a204b72..ac0bf2be 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -57,6 +57,7 @@ Bug Fixes:: * use "toc" as the default dest name for the macro toc * position page split indicator correctly when block has transparent border * replace block macro with missing PDF target with alt text +* consistently use default margin when page margin resolves to empty array Compliance:: diff --git a/lib/asciidoctor/pdf/converter.rb b/lib/asciidoctor/pdf/converter.rb index aef42503..0a8f801a 100644 --- a/lib/asciidoctor/pdf/converter.rb +++ b/lib/asciidoctor/pdf/converter.rb @@ -411,8 +411,12 @@ module Asciidoctor def build_pdf_options doc, theme case (page_margin = (doc.attr 'pdf-page-margin') || theme.page_margin) when ::Array - page_margin = page_margin.slice 0, 4 if page_margin.length > 4 - page_margin = page_margin.map {|v| ::Numeric === v ? v : (str_to_pt v.to_s) } + if page_margin.empty? + page_margin = nil + else + page_margin = page_margin.slice 0, 4 if page_margin.length > 4 + page_margin = page_margin.map {|v| ::Numeric === v ? v : (str_to_pt v.to_s) } + end when ::Numeric page_margin = [page_margin] when ::String @@ -420,7 +424,7 @@ module Asciidoctor page_margin = nil elsif (page_margin.start_with? '[') && (page_margin.end_with? ']') if (page_margin = (page_margin.slice 1, page_margin.length - 2).rstrip).empty? - page_margin = [0] + page_margin = nil else if (page_margin = page_margin.split ',', -1).length > 4 page_margin = page_margin.slice 0, 4 diff --git a/spec/page_spec.rb b/spec/page_spec.rb index bb545ede..14fd3ca0 100644 --- a/spec/page_spec.rb +++ b/spec/page_spec.rb @@ -201,6 +201,15 @@ describe 'Asciidoctor::PDF::Converter - Page' do (expect pdf.text[0].values_at :string, :page_number, :x, :y).to eql ['content', 1, 48.24, 793.926] end + it 'should use default margin if value of margin in theme is empty array' do + pdf_theme = { page_margin: [] } + input = 'content' + prawn = to_pdf input, pdf_theme: pdf_theme, analyze: :document + pdf = to_pdf input, pdf_theme: pdf_theme, analyze: true + (expect prawn.page_margin).to eql [36, 36, 36, 36] + (expect pdf.text[0].values_at :string, :page_number, :x, :y).to eql ['content', 1, 36.0, 793.926] + end + it 'should coerce margin string values to numbers' do pdf_theme = { page_margin: ['0.5in', '0.67in', '0.67in', '0.75in'] } input = 'content' @@ -254,6 +263,14 @@ describe 'Asciidoctor::PDF::Converter - Page' do (expect pdf.text[0].values_at :string, :page_number, :x, :y).to eql ['content', 1, 28.0, 797.426] end + it 'should use default margin if value of pdf-page-margin is empty array' do + input = %(:pdf-page-margin: []\n\ncontent) + prawn = to_pdf input, analyze: :document + pdf = to_pdf input, analyze: true + (expect prawn.page_margin).to eql [36, 36, 36, 36] + (expect pdf.text[0].values_at :string, :page_number, :x, :y).to eql ['content', 1, 36.0, 793.926] + end + it 'should use recto/verso margins when media=prepress', visual: true do to_file = to_pdf_file <<~'EOS', 'page-prepress-margins.pdf', enable_footer: true = Book Title |
