2017-02-16 4 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

вам может потребоваться использовать 'text_box' с опцией': at' http://prawnpdf.org/docs/0.11.1/Prawn/Text.html#method-i-text – Fallenhero

ответ

1

Чтобы поместить текст в точном положении вы можете использовать text_box с опцией :at.

Вы можете получить ширину текста с pdf.width_of(str) (используйте один и тот же стиль optione :size и т.д. в противном случае он будет использовать настройки по умолчанию для расчета)

Смежные вопросы