2012-10-07 1 views
0

Я пробовал много драгоценных камней для создания PDF-документов, некоторые из них работают очень хорошо без особых трудностей. Моя миссия - создать QR-код в PDF-документе. Я пробовал множество комбинаций между генераторами QR и генераторами PDF. Хотя у меня много проблем с получением кода Qr в документе PDF. Я использую драгоценный камень rqrcode, мне он нравится, потому что он генерирует QR-коды из CSS, а не изображение.QR-код в креветке (PDF Gem), используйте таблицу? или другое простое решение?

Я пробовал использовать драгоценные камни специально для генерации QR-кодов с креветкой, однако я продолжаю получать сообщение о том, что он не распознает метод modules. Самое близкое, что у меня есть, - это использовать аналогичную структуру в моем документе html. Но это использует его без таблицы, что бесполезно, потому что камень работает, выводя таблицу и CSS.

Я знаю, что это довольно расплывчато, но из-за количества возможных решений и различных попыток, которые я пытался, я не знаю, какую другую информацию я должен дать.

Любые идеи? Кто-нибудь еще смог создать QR-код с драгоценным камнем rqrcode, используя таблицу в креветке?

Как таблица выглядит в представлении (HTML, не PDF):

<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" 

Update

Я нашел несколько полезных code, хотя сейчас проблема у меня есть фактические проклейки в QR коды. Я хочу, чтобы код QR был очень большой. Удивительно, но параметры нового кода фактически не меняют размер; параметр size внутри фактического QR-кода очень сильно меняет размер, но на самом деле он меняет 0 QRQR-кода, чего я не хочу.

ответ

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 
+0

Выглядит хорошо. Хотя я не хочу хранить QR-код в качестве изображения, даже если я удалю изображение сразу после этого. Я нашел код, который использует barby (я обновил свой вопрос). Но у меня проблемы с увеличением размера QR-кода. Я вижу, что вы использовали барби в своем ответе. У вас был какой-то опыт в настройке с помощью barby? – Dol

+0

Я создал образ штрих-кода размером 50. его в приведенном выше коде. Я думаю, что u может генерировать QRCode, используя barby. –

+0

Кажется, что это невозможно с помощью метода, который я использую в настоящее время. Метод высоты не распознается для QR-кода.Я проголосую за ваш ответ, потому что вы определенно заслуживаете очков, но пока я держусь, чтобы попытаться найти способ сделать это без использования изображений. Я мог бы снова попробовать таблицу, если не найду ответ с моей текущей настройкой, или я могу использовать ваш метод, и в этом случае я буду указывать его правильно. Но до тех пор я действительно хочу что-то без изображений или, по крайней мере, не загружать или скачивать изображения. :) – Dol