diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 2cd13525f..08776a790 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -53,6 +53,7 @@ Bug Fixes:: * prevent special character substitution from interfering with callouts in plain verbatim block (#2390) * remove deprecated, undocumented `svg-font-family` theme key (the correct key is `svg-fallback-font-family`) * major improvement to OTF support following release of ttfunk 1.8.0 (automatic transitive dependency of prawn) +* position foreground image correctly when page layout changes (#2528) == 2.3.17 (2024-06-01) - @mojavelinux diff --git a/lib/asciidoctor/pdf/converter.rb b/lib/asciidoctor/pdf/converter.rb index f0e9c7c61..c551c51dc 100644 --- a/lib/asciidoctor/pdf/converter.rb +++ b/lib/asciidoctor/pdf/converter.rb @@ -4428,14 +4428,17 @@ def stamp_foreground_image doc, has_front_cover if (first_page = (has_front_cover ? (pages.drop 1) : pages).find {|it| !it.imported_page? }) && (first_page_num = (pages.index first_page) + 1) && (fg_image = resolve_background_image doc, @theme, 'page-foreground-image') && fg_image[0] - go_to_page first_page_num - create_stamp 'foreground-image' do - canvas { image fg_image[0], ({ position: :center, vposition: :center }.merge fg_image[1]) } - end - stamp 'foreground-image' - (first_page_num.next..page_count).each do |num| + stamps = ::Set.new + (first_page_num..page_count).each do |num| go_to_page num - stamp 'foreground-image' unless page.imported_page? + next if page.imported_page? + unless stamps.include? (stamp_name = %(foreground-image-#{page.layout})) + create_stamp stamp_name do + canvas { image fg_image[0], ({ position: :center, vposition: :center }.merge fg_image[1]) } + end + stamps << stamp_name + end + stamp stamp_name end end end diff --git a/spec/page_spec.rb b/spec/page_spec.rb index 11566076e..c6859bd9c 100644 --- a/spec/page_spec.rb +++ b/spec/page_spec.rb @@ -1826,6 +1826,12 @@ <<< + [.text-left] + #{['lots of rambling'] * 150 * ?\n} + + [page-layout=landscape] + <<< + [.text-left] #{['lots of rambling'] * 150 * ?\n} END diff --git a/spec/reference/page-watermark.pdf b/spec/reference/page-watermark.pdf index df087a80c..f9820d665 100644 Binary files a/spec/reference/page-watermark.pdf and b/spec/reference/page-watermark.pdf differ