【问题标题】:Prawn - Place image in footer on each page虾 - 将图像放在每页的页脚中
【发布时间】:2013-10-17 17:54:58
【问题描述】:

我有一张图片image.jpg,我想将它放在每页左下角的页脚中。我目前正在这样做,使用 Ruby 1.9.3 和 prawn gem 创建 PDF,如下所示:

start_new_page
image "image.jpg", :at => [0,30]  

这有两个问题:

1) 我正在动态创建页面,我需要将图像放置在所有页面上。因为我不知道会创建多少页,所以我不知道如何在每页上放置一张图片。

2) 我的 PDF 中的表格写在徽标上,导致徽标不可见。

我在一个示例中找到了这段代码 sn-p:

number_pages "<page> in a total of <total>", { :start_count_at => 0, :page_filter => :all, :at => [bounds.right - 50, 0], :align => :right, :size => 14 }

这将按照我想要的方式在每个页面上动态放置文本;但是,它不适用于图像。

如何在文档中每一页的左下角放置一张图片?

【问题讨论】:

    标签: ruby prawn


    【解决方案1】:

    为什么不使用repeat

    repeat(:all) do
     image "image.jpg", :at => [pdf.bounds.right - 100, 0], :align => :right
    end
    

    您可以在虾手册(第 98 页)中找到更多信息。

    【讨论】:

      【解决方案2】:

      这到底是什么问题?

      这对我来说很好用:

      require 'prawn'
      
      Prawn::Document.generate('hello.pdf') do |pdf|
        pdf.text("Hello Prawn!")
        pdf.image "image.jpg", :at => [pdf.bounds.right - 100, 0], :align => :right
        pdf.number_pages "<page> in a total of <total>", :start_count_at => 0, :page_filter => :all, :at => [pdf.bounds.right - 100, 0], :align => :right, :size => 14
      end
      

      要将其添加到所有页面,您可以这样做:

      require 'prawn'
      
      Prawn::Document.generate('hello.pdf') do |pdf|
        pdf.text("Hello Prawn!")
        pdf.start_new_page
        pdf.text("Hello Prawn!")
        pdf.start_new_page
        pdf.text("Hello Prawn!")
        pdf.page_count.times do |i|
          pdf.go_to_page i
          pdf.image "image.jpg", :at => [pdf.bounds.right - 100, 0], :align => :right
        end
        pdf.number_pages "<page> in a total of <total>", :start_count_at => 0, :page_filter => :all, :at => [pdf.bounds.right - 100, 0], :align => :right, :size => 14
      end
      

      可能有更好的选择,但我以前从未使用过虾。

      【讨论】:

      • 问题是您的pdf.image 方法上没有:page_filter =&gt; :all 参数,并且此方法不适用于pdf.image。我需要将图像放置在每个页面上。
      • 这很有创意,.go_to_page 对我来说是新的,在其他情况下也会有所帮助。感谢您的提示。
      猜你喜欢
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多