2017-02-16 5 views
0

Wenn ich versuche, den folgenden Code:Prawn/PDF: Mehrere Formate/Text in einer Zeile?

text "Hello " 
text "World" 

Sie hallo auf der Welt statt Welt direkt nach Hallo machen. Ich habe eine komplizierte Formatierung (Hervorhebung, verschiedene Schriftgrößen usw.) auf Text, den ich in einer Zeile brauche. Ich weiß, dass die :inline_formatting Option existiert, aber es scheint, dass dies zu kompliziert ist, um diese Option zu verwenden.

Ich habe den folgenden Code:

highlight_callback.rb:

class HighlightCallback 
    def initialize(options) 
    @color = options[:color] 
    @document = options[:document] 
    end 

    def render_behind(fragment) 
    original_color = @document.fill_color 
    @document.fill_color = @color 
    @document.fill_rectangle(fragment.top_left, 
    fragment.width, 
    fragment.height) 

    @document.fill_color = original_color 
    end 
end 

order.pdf.prawn:

highlight = HighlightCallback.new(:color => 'ffff00', :document => self) 

#code.... 

text "Authorized Signature: " 
formatted_text [{:text => "_" * 15, :callback => highlight }], :size => 20 

, die das Bild angehängt ist, zu erzeugen. Wie kann ich die Signaturzeile auf die gleiche Ebene wie der Text bringen?

enter image description here

+0

hmm, hat es nie so wie. Ich denke, du musst den Zeiger selbst bewegen. Aber Garnele kann die Breite deines Textes leicht berechnen – Fallenhero

+0

wie bewege ich den Zeiger? Ich habe das Gefühl, dass ich in der Lage sein sollte, nach dem ersten Text eine Reihe von Koordinaten zu setzen, um den Cursor zurückzusetzen und dann an dieser Stelle nach meinem Text fortzufahren. – DJTripleThreat

+0

müssen Sie 'text_box' mit': at' -Option http://prawnpdf.org/docs/0.11.1/Prawn/Text.html#method-i-text verwenden – Fallenhero

Antwort

1

Um Text an einer exakten Position platzieren Sie text_box mit der Option :at verwenden können.

Sie können die Breite des Textes erhalten mit pdf.width_of(str) (verwenden Sie den gleichen Stil optione :size usw. sonst wird es die Standardeinstellungen verwenden zu berechnen)

Verwandte Themen