-1

早期Prawn的 gem 允许通过其html表示创建一个表(将一个 html 表字符串作为输入参数,如<table class="abc"> .... </table>)。现在我在手册中没有找到这个设施。

那么现在有可能吗?如果没有,那还有其他选择吗?

4

2 回答 2

0

TL;DR:如果您的用例是 1)生成 HTML 和 PDF 数据(如在线发票等),以及 2)确保两者看起来相同,那么 Prawn 并不是最好的解决方案(这是相同的建议)在虾自述文件中)。

在您的情况下,您可以使用 Nokogiri 或Upton解析 HTML并从 HTML 表中提取数据,然后使用它通过 Prawn 生成 PDF 表示。HTML 样式可能不会直接转换为 Prawn 使用的样式,因此,即使有很多代码争论,您也可能无法实现样式的一致性——我认为,从答案的评论中royalGhost,你得到的结果是想。此外,如果您的 HTML 表是嵌套的并且解析代码不满足该问题,那么简单的 Nokogiri 解析解决方案将无法工作。例如,考虑一下:

<table>
  <tr>
    <td>First Column, First Row</td>
    <td>Second Column, First Row</td>
  </tr>
  <tr>
    <table>
      <tr>
        <td>First Column, Second Row</td>
        <td>Second Column, Second Row</td>
        <td>Third Column, Second Row</td>
      </tr>
    </table>
  </tr>
</table>

然后,在 Ruby 解析片段中,您应该确保将内部<table>...</table>解析为一个Prawn::Table对象,而不是一行Prawn::Table::Cell对象。

任何wkhtmltopdf基于选项(例如WickedPDFPDFKit)都提供了更简洁的方式来实现 HTML 到 PDF 的转换解决方案。

你有两个选择:

  1. 完全抛弃虾,更喜欢上面的解决方案。
  2. 通过 Nokogiri/Upton 从 HTML 中提取数据并生成 PDF 来使用 Prawn,而不必担心样式与 HTML 表示中的样式相同。
于 2013-10-02T09:55:56.233 回答
-2

好吧,您可以使用 prawnto gem 作为模板来使用 prawn 创建表。

例如,如果您定义以下模板,它将绘制具有 x、y 和 z 宽度的 3 列的表格。

data = [ ["Column 1", "Column 2", "Column 3"] ]
table(data, :column_widths => [x,y,z], :cell_style => { :inline_format => true })
于 2013-09-27T09:16:23.440 回答