【发布时间】:2017-02-16 15:28:59
【问题描述】:
当我尝试以下代码时:
text "Hello "
text "World"
它们将 Hello 渲染在 World 之上,而不是在 Hello 之后立即渲染 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
正在生成附加图像。怎样才能得到与正文同层的签名行?
【问题讨论】:
-
嗯,从来没有那样过。我想你必须自己移动指针。但是大虾可以轻松计算出你的文字宽度
-
如何移动指针?我觉得我应该能够在第一个文本之后给它一组坐标来重置光标,然后在我的文本之后继续在同一个位置。
-
您可能需要使用
text_box和:at选项prawnpdf.org/docs/0.11.1/Prawn/Text.html#method-i-text -
谢谢。我会试试的。如果这似乎可行,我会告诉你的。为 ?我会投票并将其标记为正确。
-
成功了!发布详细答案,我会将其标记为正确并点赞。
标签: ruby-on-rails pdf prawn prawnto