0

私は PDF ドキュメントを作成するために多くの gem を試しましたが、そのうちのいくつかは特に問題なくうまく機能します。私の使命は、PDF ドキュメントで QR コードを作成することです。QR ジェネレーターと PDF ジェネレーターの間で多くの組み合わせを試しました。Qrコードを実際にPDFドキュメントに入れるのに苦労していますが。rqrcode画像ではなく CSS から QR コードを生成するため、gem を使用しています。

modulesPrawn で QR コードを生成するために特別に構築された gem を使用してみましたが、メソッドを認識しないというメッセージが表示され続けます。私が得た最も近い方法は、htmlドキュメントで同様の構造を使用することです。しかし、それはテーブルなしでそれを使用するだけであり、gem はテーブルと CSS を出力することによって機能するため、役に立ちません。

これが非常に漠然としていることは承知していますが、考えられる解決策の量と私が試したさまざまな試みのために、他にどのような情報を提供すべきかわかりません.

何か案は?rqrcodePrawn のテーブルを使用して、gem で QR コードを作成できた人はいますか?

ビューでのテーブルの外観 (PDF ではなく HTML):

<table class="qr">
 <% qr.modules.each_index do |x| -%>
   <tr>
   <% qr.modules.each_index do |y| -%>
    <% if qr.dark?(x,y) -%>
    <td class="black"/>
    <% else -%>
    <td class="white"/>
    <% end -%>
   <% end -%>
   </tr>
 <% end -%>
</table> 

最も近いのは、壊れることなく来たものです.prawn.pdf file(テーブルを追加しようとすると壊れます)。*とは機能!することをテストしているだけでmodules method、セルの背景に変更しようとすると壊れます。

@qr.modules.each_index do |x|
   @qr.modules.each_index do |y|
    if @qr.dark?(x,y)
      pdf.text "!"
    else
      pdf.text "*"
    end
   end
 end

Gemfile

gem 'prawn'

gem 'prawn-qrcode'

gem "rqrcode", "~> 0.4.2"

アップデート

便利なコードを見つけましたが、問題は QR コードの実際のサイズです。QRコードをとても大きくできるようにしたいです。驚くべきことに、新しいコードのパラメーターは実際にはサイズを変更しません。実際の QR コード内のsizeパラメーターはサイズをわずかに変更しますが、実際には QR コードのバージョンを変更しています。これは私が望むものではありません。

4

1 に答える 1

1

私はほぼ同様の問題を抱えていました。バーコードのPDFドキュメントを生成する必要がありました。バーコードはhtmlビューでグリッドに表示する必要があり、ユーザーが[PDFとして保存]をクリックすると、ビューのpdfファイルがユーザーに送信されます。私はそれを次のように解決しました

コントローラーで、クラスの前に

require 'rubygems'
require 'barby'
require 'barby/barcode/code_128'
require 'chunky_png'
require 'barby/outputter/png_outputter'
require 'aws/s3'

コントローラ方式

def generate_barcode
   ...
   @barcode_numbers = inspection.get_barcode_numbers
   ...
   @barcode_numbers.each do |d|
     barcode = Barby::Code128B.new(d)
     image_path = get_image_path + "code_#{params[:inspection_id]}_#{@spec.id}_#{d.sub('.', '0')}.png"
     File.open(image_path, 'w'){|f|
       f.write barcode.to_png(:height => 50, :margin => 3)
       Barcode.create(:filename => "code_#{params[:inspection_id]}_#{@spec.id}_#{d.sub('.', '0')}.png", :measurement => d)
     }
   end
   html = render_to_string(:action => "generate_barcode.html.haml", :layout => false)
   kit = PDFKit.new(html)
   send_data(kit.to_pdf, :filename => 'barcodes.pdf', :type => 'application/pdf', :disposition => 'inline')
   @all_barcodes.each do |d|
     File.delete("#{Rails.root}/tmp/#{d.filename}")
   end if Rails.env != "development"
   @all_barcodes.destroy_all
于 2012-10-07T04:36:43.510 に答える