2017-02-16 34 views
0

当我尝试下面的代码:虾/ PDF:一行上有多种格式/文本?

text "Hello " 
text "World" 

后,他们对你好你好呈现在世界之巅,而不是世界的。我在一行上需要一些复杂的格式(突出显示,不同的字体大小等)。我知道:inline_formatting选项存在,但似乎这太复杂了,使用该选项。

我有以下代码:

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 

其产生附加图像。我怎样才能得到与文本相同级别的签名行?

enter image description here

+0

嗯,从来没有像这一点。我想你必须自己移动指针。不过大虾可以很容易地计算出你的文字的宽度 – Fallenhero

+0

我该如何移动指针?我觉得我应该能够在第一个文本之后给它一组坐标来重置光标,然后在我的文本之后继续在同一个点上。 – DJTripleThreat

+0

您可能需要在':at'选项中使用'text_box' http://prawnpdf.org/docs/0.11.1/Prawn/Text.html#method-i-text – Fallenhero

回答

1

要放置文本你可以使用text_box与选项:at一个确切位置。

你可以得到你的pdf.width_of(str)文本的宽度(使用相同的样式optione :size等。否则会使用默认设置来计算)