【问题标题】:How do I add a QR code to table rows with Prawn and Rails 4如何使用 Prawn 和 Rails 4 将 QR 码添加到表格行
【发布时间】:2017-02-16 15:26:38
【问题描述】:

我在 Rails 4 中使用 prawn gem

我有以下宝石:

gem 'prawn'
gem 'prawn-table'
gem 'prawn-qrcode'

我收到以下错误:

Prawn::Errors::UnrecognizedTableContent

当我这样做时:

require 'prawn/qrcode'

class ReportPdf < Prawn::Document
  def initialize(organizations)
    super()
    @organizations = organizations
    table_content
  end

  def table_content
    table organization_rows do
      row(0).font_style = :bold
      self.header = true
      self.row_colors = ['DDDDDD', 'FFFFFF']
      self.column_widths = [40, 300, 200]
    end
  end

  def organization_rows
    [['#', 'Name', 'id']] +
      @organizations.map do |organization|
        [render_qr_code(RQRCode::QRCode.new(organization.id.to_s)), organization.name, organization.id]
      end
  end

end

谁能提供一个在表格的每一行中添加二维码的示例?

更新: 我将我的表格代码更改为以下(我在二维码中添加了.to_s

def organization_rows
  [['#', 'Name', 'id']] +
  @organizations.map do |organization|
   [render_qr_code(RQRCode::QRCode.new(organization.id.to_s)).to_s,
   organization.name,
   organization.id]
  end
end

现在,我得到以下 pdf。见截图。如何在表格单元格中获取这些二维码?

【问题讨论】:

标签: ruby-on-rails prawn


【解决方案1】:

您目前使用:

def organization_rows
  [['#', 'Name', 'id']] +
  @organizations.map do |organization|
   [render_qr_code(RQRCode::QRCode.new(organization.id.to_s)).to_s,
   organization.name,
   organization.id]
  end
end

这导致 prawn-table 将 QRCode 转换并呈现​​为字符串。

默认情况下,表格接受以下数据作为表格单元格:

  1. 字符串:生成一个文本单元格(最常见的用法)
  2. Prawn::Table::Cell
  3. 大虾::表
  4. 数组
  5. 图片

不幸的是,我现在没有时间真正深入研究这个问题,但从位于http://prawnpdf.org/docs/0.11.1/Prawn/Table/Cell.html 的文档来看, 你很可能需要创建一个 Prawn::Table::Cell 的子类,通过实现#draw_content() 方法来呈现二维码。

您还可能需要通过实现#set_width_constraints() 来调整/限制表格单元格的尺寸以提供适合二维码的最小尺寸

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多