如何在 Rails 中为 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?

Posted

技术标签:

【中文标题】如何在 Rails 中为 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?【英文标题】:How can I do inline formatting (bold and underline) for PDF generated by Prawnto in Rails? 【发布时间】:2011-06-23 04:41:07 【问题描述】:

我在 Rails 应用程序中使用 Prawn 和 Prawnto 插件生成了一个 PDF 文件。

我创建了一个带有标准文本区域的标准表单,并将其作为 PDF 文件的正文提交。

但是,我需要能够格式化单词和句子

粗体 下划线 可能是不同的字体大小

我希望能够在 textarea 输入框中执行此操作。现在,因为我使用 prawnto,所以我基本上是在生成一个输出 textarea 中内容的视图。

但是,如果我在文本区域中放置,比如说,bold,它不会格式化,它只是呈现。

我该怎么做?

【问题讨论】:

【参考方案1】:

我们可能有类似的应用程序...

Prawn 可以基于(简单)html 进行基本的内联格式化 - 看看 github 上的 text/inline_format.rb 示例。事实上,如果你还没有看完整版 Prawn Example Gallery,那就看看 - 这是我见过的最好的之一。

要获得您需要的 HTML,您可以直接在 textarea 中输入 HTML(有点难看 - 如果除您之外的任何人都将输入文本,这可能不是一个好主意)或使用 Markdown 之类的东西来解释更用户友好的内容“样式代码”,就像 *** 一样。我认为BlueCloth 是最著名的 ruby​​ 实现,但我自己从未使用过。

粗体和下划线?没问题。字体大小可能更难 - 我想让 BlueCloth 发出类似于他们在 Prawn 示例中使用的(已弃用的) 标签的东西会很棘手......

希望这会有所帮助 - 干杯!

【讨论】:

所以如果我只添加 inline_format => true 它将在文本区域中获取 HTML? 我正在使用 prawnto 插件,我忘记了,所以没有直接访问 PDF,只是传递带有渲染 pdf 的视图,而 prawnto 正在处理它......我怎样才能通过这种方式进行格式化? @Angela 我没听说过虾。不过,我刚刚检查了一下,它看起来很有希望。看起来它仍然使用原始的虾方法,只是在一个视图中,所以你应该在你的视图中的某个地方调用pdf.text @textarea_text。添加:inline_format => true 选项就像你说的应该就可以了。但没有承诺 - 我还没有测试过!【参考方案2】:

响应粗体字...

在控制器中:

respond_to do |format|
  format.pdf  render :layout => false
  prawnto :filename => @current_project+".pdf", :prawn => :font => 'Times-Roman', :inline=>false     
end

然后在 pdf.prawn 文件中可以使用:

在文本框中:

pdf.text_box "Document Revisions", :size => 16, :style => :bold, :at => [0.mm,10.mm], :width => 100.mm, :height => 15.mm;

或单独在一行文本中:

pdf.text "Document Contents", :size => 16, :style => :bold;

据我了解 - 但未尝试过 - 强调您需要做的事情:

:styles => [:bold, :underline];

reference this link for more

这不是 0.8.4 版本的功能,而是 0.10.2 版本的功能 - 不知道在 0.8.4 中你会如何做下划线。我目前没有使用 0.10.2,因此无法确认这是否有效。

根据你所说的,我认为这是你想要的粗体:

pdf.text_box "#@yourtext.text", :size => 16, :style => :bold, :at => [0.mm,10.mm], :width => 100.mm, :height => 15.mm;

【讨论】:

:styles => [:bold, :underline];在 prwan 0.8.4 中不起作用,但在 github 上是最新版本。所以不确定您使用的是哪个版本。我使用的是 0.8.4,而 :style => :bold 其他的则不行。已编辑答案以涵盖此问题和其他问题。

以上是关于如何在 Rails 中为 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby on Rails 4 中为 post 生成唯一的随机 id?

如何在 Rails 中为 collection_select 设置 HTML 选项?

ruby 在rails中为具有关联的对象生成JSON

Rails:如何在 Rails 中为 Devise 设置密钥?

如何在 Rails 验证错误中突出显示字段

在测试环境中为 Mandrill 配置 rails 应用程序