早期Prawn
的 gem 允许通过其html表示创建一个表(将一个 html 表字符串作为输入参数,如<table class="abc"> .... </table>
)。现在我在手册中没有找到这个设施。
那么现在有可能吗?如果没有,那还有其他选择吗?
早期Prawn
的 gem 允许通过其html表示创建一个表(将一个 html 表字符串作为输入参数,如<table class="abc"> .... </table>
)。现在我在手册中没有找到这个设施。
那么现在有可能吗?如果没有,那还有其他选择吗?
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
基于选项(例如WickedPDF或PDFKit)都提供了更简洁的方式来实现 HTML 到 PDF 的转换解决方案。
你有两个选择:
好吧,您可以使用 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 })