【问题标题】:Using the prawn-qrcode gem to render a QR code in a PDF via prawn使用 prawn-qrcode gem 通过 prawn 在 PDF 中呈现二维码
【发布时间】:2013-06-14 03:18:49
【问题描述】:

编程新手,这是我的第二个问题。 prawn-qrcode 看起来像我的解决方案,但安装说明对于代码的位置有点模糊。感谢这里的帮助,我的代码中可能存在一些错误。

**Gem File**

gem 'devise'
gem 'linkedin'
gem 'omniauth'
gem 'omniauth-linkedin'
gem 'haml'
gem 'carrierwave'
gem 'rmagick'
gem 'rqrcode', "~> 0.4.2"
gem 'prawn-qrcode', "~> 0.2.0"
gem 'will_paginate', '> 3.0'
gem 'ransack'
gem 'omniauth-google-oauth2'
gem 'prawn'
gem 'hirb'

Relevant section of the controller 

def show
@property = Property.find(params[:id])
@qr = RQRCode::QRCode.new(property_path, :size => 6, :level => :h )
@prospect = Prospect.new

respond_to do |format|
     format.html # show.html.erb
     format.json { render json: @property }
     format.pdf do
           pdf = PropertyPdf.new(@property)
           send_data pdf.render, type: "application/pdf",
                                 disposition: "inline"
     end
end
end

Prawn PDF View

class PropertyPdf < Prawn::Document

def initialize(property)
    super(top_margin: 70)
    @property = property
    @qrcode_content = 'http://tbd.com'
    qrcode
    building_heading

end

def qrcode
 print_qr_code(@qrcode_content, :dot=>2.8)
end

谢谢

【问题讨论】:

    标签: ruby-on-rails pdf pdf-generation qr-code prawn


    【解决方案1】:

    你唯一需要做的就是:

    require 'prawn/qrcode'
    

    它会自动注册为 Prawn 的扩展,您可以在 PDF 生成中使用。

    github 项目中的示例也应该涵盖大多数用例:

    https://github.com/jabbrwcky/prawn-qrcode/tree/master/examples

    干杯, 延斯

    【讨论】:

    • 您的回答似乎不起作用。如果我将它放在 def qrcode 区域的 PDF 文件中,则没有任何变化。如果我把它放在其他任何地方,我会收到以下错误:PropertiesController 中的 LoadError#show no such file to load -- prawn/qrcode
    • 我了解您发布的代码只是片段 - 更完整的示例将有助于找到解决方案。 sn-p 看起来生成的 qrcode 被分配给 initialize() 中的局部变量,然后在 qrcode 中引用它,因为它超出了范围,所以它只能是未定义的。
    • 我不确定你在上面想告诉我什么
    • @sjustinbrown 这是一个应该有效的要点:gist.github.com/jabbrwcky/5830562
    • 初始化方法中的这些行:qrcode_content = 'http://tbd.com'qrcode = RQRCode::QRCode.new('http://tbd.com', :size =&gt; 6, :level =&gt; :h ) 将值分配给方法的局部范围内的变量,因此 qrcode_contentqrcode 将在其他任何地方未定义,除非有一些您的 sn-p 中缺少代码。所以假设你的 sn-p 中的代码是完整的,qrcode_content 在调用print_qr_code(qrcode_content, :dot=&gt;2.8) 中将始终是未定义/空的@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多