2017-07-03 2 views
1

Ich habe folgenden einfachen Code, um ein PDF zu generieren.Prawn: Fließtext automatisch auf eine neue Seite

def employe_details 
     y = cursor 
bounding_box([0, y], :width => 16.cm) do 
      @employe.each do |pr| 
       txt = pr.week.to_s + ' ' 
       txt += "work hours" 
       text_box txt, size: 11, :at => [0.5.cm, cursor] 
       move_down 0.4.cm 
      end 
       .#more similar texts 
       . 
       .  
end 

Problem ist, das erstellt nicht automatisch eine neue Seite. Wenn der Text die erste Seite überschreitet, wird der restliche Text überhaupt nicht angezeigt oder diese Texte werden nicht auf einer neuen Seite angezeigt.

Wie verschiebt man die Texte automatisch auf eine neue Seite, wenn sie das Ende einer Seite erreicht?

Update: Problem mit meinem Code scheint mit dieser Linie :at => [0.5.cm, cursor], wenn ich die Position entferne dann fließt es zur nächsten Seite, gleiche passiert, wenn ich Spanne verwenden. Wenn ich Position mit Text in span verwende, dann fließt es nicht zur nächsten Seite und wenn ich es entferne, fließt es zur nächsten Seite. Also, wie kann ich so etwas wie diese

text_box txt, size: 11, :at => [0.5.cm] 
text txt, size: 11, :at => [0.5.cm] 

Textbox oder Text ohne Cursorpositionen, muß ich x-Position verwenden, da jede Zeile unterschiedliche x-Positionen hat.

+1

ich glaube, Sie es überprüfen kann, möglich, hilft es Ihnen http://www.rubydoc.info/github/Sandale/Garnele/Prawn% 2FDocument% 3Aspan –

Antwort

2

bounding_box Inhalt wird nicht auf die nächste Seite fließen. Sie können mit span statt: (Hervorhebung hinzugefügt)

Eine Spanne einer speziellen Box Zwecke Begrenzungsbox ist, dass eine Spalte von Elementen ermöglicht den margin_box relativ positioniert werden.

Diese Methode wird normalerweise für verwendet, wobei eine Textsäule von einer Seite zur nächsten fließt.

Die manual erwähnt dies auf Seite 35:

Dieses Beispiel zeigt auch Text über mehrere Seiten nach dem Rand Box und andere Begrenzungskästen fließt.

# ... 

move_cursor_to 200 
span(350, :position => :center) do 
    text "Span is a different kind of bounding box as it lets the text " + 
     "flow gracefully onto the next page. It doesn't matter if the text " + 
     "started on the middle of the previous page, when it flows to the " + 
     "next page it will start at the beginning." + " _ " * 500 + 
     "I told you it would start on the beginning of this page." 
end 

Das Ergebnis auf den Seiten 37/38 dargestellt:

Screenshot

+0

Hallo! Ich habe meine Frage aktualisiert. Bitte guck dir das an. – asdfkjasdfjk

+0

@asdfkjasdfjk Ich kann Ihr Snippet nicht isoliert ausführen. Bitte stelle eine [mcve] zur Verfügung, die ich kopieren und einfügen kann. – Stefan

Verwandte Themen