10

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

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

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

  • 大胆的
  • 强调
  • 也许不同的字体大小

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

但是,如果我在文本区域中加粗,它不会格式化,只会呈现。

我该怎么做呢?

4

2 回答 2

11

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

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

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

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

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

于 2011-02-08T05:45:19.417 回答
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];

参考这个链接了解更多

这不是 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;
于 2011-02-09T00:02:57.330 回答