2017-09-19 8 views
1

私は海老RubyのPDFジェネレータで文書を作成しようとしているが、私は次のような問題に直面している:バウンディングボックス

私が何をしようとしている構造を示し、以下の画像。

enter image description here

そして、これは私がこれを達成しようとしている方法で、私の本当のシナリオを模倣しようとするサンプルコードです。 2.times(50.times.map { |i| i.to_s }.join("\n"))は動的データを模倣しています。

require 'prawn' 

class MyPdf 
    def self.to_pdf(*args) 
    new(*args).to_pdf 
    end 

    def to_pdf 
    pdf.move_down 200 

    2.times do 
     pdf.bounding_box(
     [0, pdf.cursor], 
     width: pdf.bounds.width 
    ) do 
     pdf.text (50.times.map { |i| i.to_s }.join("\n")) 
     pdf.stroke_bounds 
     end 
    end 

    pdf 
    end 

    def pdf 
    @pdf ||= Prawn::Document.new(page_size: 'A4') 
    end 
end 

しかし、ダイナミックバウンディングボックスの配置には多くの問題があります。

enter image description here

あなたの人々がまたはバウンディングボックスをせずにこれを達成する方法を知っていますか?

答えて

1

私はバディグボックスでこれを行うことができませんでした。

data = [] 
500.times do |i| 
    data.push [i.to_s] 
end 

table(data, width: bounds.width) do |t| 
    t.cells.border_width = 0 # We don't want to see a table 
    t.before_rendering_page do |page| 
    page.row(0).border_top_width = 1 
    page.row(-1).border_bottom_width = 1 
    page.column(0).border_left_width = 1 
    page.column(-1).border_right_width = 1 
    end 
end 

ソース:この最善の解決策ではありませんが、テーブルでこれを行うことができかもしれhttp://prawnpdf.org/prawn-table-manual.pdf(17ページ)

次のページの先頭に継続を持っているあなたの余白を確認

1

あなたはspanを探していることがあります。

def to_pdf 
    pdf.move_down 200 

    2.times do 
    pdf.span(pdf.bounds.width) do 
     pdf.text (50.times.map { |i| i.to_s }.join("\n")) 
     pdf.stroke_bounds 
    end 
    end 
end 
関連する問題