summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.adoc1
-rw-r--r--lib/asciidoctor/pdf/converter.rb10
-rw-r--r--spec/page_spec.rb17
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