2017-09-19 4 views
1

Ich versuche, ein Dokument mit Garnelen Ruby-PDF-Generator zu schaffen, aber ich bin vor folgendes Problem:Bounding Box über mehrere Seiten mit Garnelen PDF

Das Bild unten zeigt, welche Struktur ich versuche zu tun .

enter image description here

Und dies ist der Beispiel-Code, der mein wirkliches Szenario mit der Art und Weise versucht, imitiert, dass ich dies zu erreichen bin versucht. Die 2.times und (50.times.map { |i| i.to_s }.join("\n")) ahmt dynamische Daten nach.

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 

Aber ich habe eine Menge Probleme mit der dynamischen Bounding Box Platzierung.

enter image description here

Haben Sie den Menschen einen Weg kennen diese Boxen mit oder ohne Begrenzungs zu erreichen?

Antwort

1

Ich habe das mit Boundig-Boxen nicht gemacht. Vielleicht ist dies nicht die beste Lösung ist, aber Sie können mit Tabellen tun:

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 

Quelle: http://prawnpdf.org/prawn-table-manual.pdf (Seite 17)

überprüfen Sie die Ränder auf der oben auf der nächsten Seite, um die Fortsetzung haben

1

Sie suchen können 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