大虾PDF更改字号和行高自html_text
Prawn PDF change font size and line height from html_text
在带有 Ruby 2.7 的 Rails 6 应用程序中,我使用 gem prawn
生成 pdf 文件。到目前为止,一切都相当简单。我在 html_text
中定义行高时遇到问题。就像下面的方法一样:
def invoice_notes_section
invoice_notes.each { |note| html_text(note) }
end
def invoice_notes
@invoice_notes ||= begin
notes = []
notes << (invoice.display_service_period? ? invoice.service_period_text : I18n.t('pdf.no_service_period'))
notes << invoice.discount_text if invoice.display_discount_text?
notes << invoice.notes
notes << I18n.t('pdf.small_entrepreneur_hint') if invoice.customer.company.small_entrepreneur?
notes.compact
end
我想将字体大小更改为 7pt,将行高更改为 9pt。怎么做,因为我不能简单地添加例如:
notes << invoice.notes, size: 7, leading: 9
哪个给我 SyntaxError:
error, unexpected ',', expecting `end'
notes << invoice.notes, size: 7, leading: 9
^
):
在本节中,我将尝试实现如下所示的文本块:
编辑:
def html_text(text)
return if strip_tags(text).strip.empty?
if text.include?('>') && text.include?('</')
styled_text
else
text text
end
rescue Prawn::Errors::UnknownFont
text text, size: BODY_FONT_SIZE
end
如果我将 if 块行替换为:
if text.include?('>') && text.include?('</')
styled_text text, size: 7, leading: 9
else
text text, size: 7, leading: 9
end
styled_text text, size: 7, leading: 9
行出现错误 ArgumentError (wrong number of arguments (given 2, expected 1)):
。那是什么styled_text?如果我将其更改为 text
我将得到:
Das Leistungsdatum entspricht dem Rechnungsdatum sofern nichts anderes erwähnt wird.
<p>Bitte überweisen Sie den Betrag bis zum oben angegebenen Fälligkeitsdatum auf das angegebene Bankkonto unter Angabe
der Rechnungsnummer</p>
而不是:
Das Leistungsdatum entspricht dem Rechnungsdatum sofern nichts anderes erwähnt wird.
Bitte überweisen Sie den Betrag bis zum oben angegebenen Fälligkeitsdatum auf das angegebene Bankkonto unter Angabe
der Rechnungsnummer
我认为您已经回答了关于 styled_text
是什么的问题(因为它来自 prawn-styled-text
gem)。
此外,styled_text
方法只接受一个参数,因此您不能像 size: 7, leading: 9
那样提供额外的选项。
如果要更改字体大小和行距,则必须自己修改 HTML 片段。我想如果你做这样的事情而不是整个 if
子句,它应该会起作用:
styled_text("<div style='font-size: 7; line-height: 9'>#{text}</div>")
在带有 Ruby 2.7 的 Rails 6 应用程序中,我使用 gem prawn
生成 pdf 文件。到目前为止,一切都相当简单。我在 html_text
中定义行高时遇到问题。就像下面的方法一样:
def invoice_notes_section
invoice_notes.each { |note| html_text(note) }
end
def invoice_notes
@invoice_notes ||= begin
notes = []
notes << (invoice.display_service_period? ? invoice.service_period_text : I18n.t('pdf.no_service_period'))
notes << invoice.discount_text if invoice.display_discount_text?
notes << invoice.notes
notes << I18n.t('pdf.small_entrepreneur_hint') if invoice.customer.company.small_entrepreneur?
notes.compact
end
我想将字体大小更改为 7pt,将行高更改为 9pt。怎么做,因为我不能简单地添加例如:
notes << invoice.notes, size: 7, leading: 9
哪个给我 SyntaxError:
error, unexpected ',', expecting `end'
notes << invoice.notes, size: 7, leading: 9
^
):
在本节中,我将尝试实现如下所示的文本块:
编辑:
def html_text(text)
return if strip_tags(text).strip.empty?
if text.include?('>') && text.include?('</')
styled_text
else
text text
end
rescue Prawn::Errors::UnknownFont
text text, size: BODY_FONT_SIZE
end
如果我将 if 块行替换为:
if text.include?('>') && text.include?('</')
styled_text text, size: 7, leading: 9
else
text text, size: 7, leading: 9
end
styled_text text, size: 7, leading: 9
行出现错误 ArgumentError (wrong number of arguments (given 2, expected 1)):
。那是什么styled_text?如果我将其更改为 text
我将得到:
Das Leistungsdatum entspricht dem Rechnungsdatum sofern nichts anderes erwähnt wird.
<p>Bitte überweisen Sie den Betrag bis zum oben angegebenen Fälligkeitsdatum auf das angegebene Bankkonto unter Angabe
der Rechnungsnummer</p>
而不是:
Das Leistungsdatum entspricht dem Rechnungsdatum sofern nichts anderes erwähnt wird.
Bitte überweisen Sie den Betrag bis zum oben angegebenen Fälligkeitsdatum auf das angegebene Bankkonto unter Angabe
der Rechnungsnummer
我认为您已经回答了关于 styled_text
是什么的问题(因为它来自 prawn-styled-text
gem)。
此外,styled_text
方法只接受一个参数,因此您不能像 size: 7, leading: 9
那样提供额外的选项。
如果要更改字体大小和行距,则必须自己修改 HTML 片段。我想如果你做这样的事情而不是整个 if
子句,它应该会起作用:
styled_text("<div style='font-size: 7; line-height: 9'>#{text}</div>")