Class Barby::PrawnOutputter
In: lib/barby/outputter/prawn_outputter.rb
Parent: Outputter
Barcode1D EAN13 Code128 Code25 Code93 Code39 Bookland EAN8 Barcode Barcode2D QrCode Code128A Code128B Code128C GS1128 Outputter CairoOutputter PngOutputter ASCIIOutputter RmagickOutputter PDFWriterOutputter SvgOutputter PrawnOutputter Code25IATA Code25Interleaved lib/barby/barcode/gs1_128.rb lib/barby/outputter/png_outputter.rb lib/barby/outputter/svg_outputter.rb lib/barby/outputter/rmagick_outputter.rb lib/barby/barcode.rb lib/barby/outputter/ascii_outputter.rb lib/barby/outputter.rb lib/barby/barcode/code_128.rb lib/barby/barcode/code_39.rb lib/barby/outputter/pdfwriter_outputter.rb lib/barby/barcode/code_93.rb lib/barby/outputter/prawn_outputter.rb lib/barby/barcode/ean_8.rb lib/barby/barcode/code_25_iata.rb lib/barby/outputter/cairo_outputter.rb lib/barby/barcode/ean_13.rb lib/barby/barcode/code_25.rb lib/barby/barcode/code_25_interleaved.rb lib/barby/barcode/qr_code.rb lib/barby/barcode/bookland.rb VERSION Barby dot/m_22_0.png

Methods

Public Instance methods

[Source]

    # File lib/barby/outputter/prawn_outputter.rb, line 17
17:     def annotate_pdf(pdf, opts={})
18:       opts = options(opts)
19:       xpos, ypos, height, xdim = opts[:x], opts[:y], opts[:height], opts[:xdim]
20:       ydim = opts[:ydim] || xdim
21:       orig_xpos = xpos
22: 
23:       if barcode.two_dimensional?
24:         boolean_groups.reverse_each do |groups|
25:           groups.each do |bar,amount|
26:             if bar
27:               pdf.move_to(xpos, ypos)
28:               pdf.line_to(xpos, ypos+ydim)
29:               pdf.line_to(xpos+(xdim*amount), ypos+ydim)
30:               pdf.line_to(xpos+(xdim*amount), ypos)
31:               pdf.line_to(xpos, ypos)
32:               pdf.fill
33:             end
34:             xpos += (xdim*amount)
35:           end
36:           xpos = orig_xpos
37:           ypos += ydim
38:         end
39:       else
40:         boolean_groups.each do |bar,amount|
41:           if bar
42:             pdf.move_to(xpos, ypos)
43:             pdf.line_to(xpos, ypos+height)
44:             pdf.line_to(xpos+(xdim*amount), ypos+height)
45:             pdf.line_to(xpos+(xdim*amount), ypos)
46:             pdf.line_to(xpos, ypos)
47:             pdf.fill
48:           end
49:           xpos += (xdim*amount)
50:         end
51:       end
52: 
53:       pdf
54:     end

[Source]

    # File lib/barby/outputter/prawn_outputter.rb, line 11
11:     def to_pdf(opts={})
12:       opts = options(opts)
13:       annotate_pdf(Prawn::Document.new(opts[:document]), opts).render
14:     end

Private Instance methods

[Source]

    # File lib/barby/outputter/prawn_outputter.rb, line 59
59:     def default_options
60:       @default_options ||= {
61:         :margin => 5,
62:         :height => 100,
63:         :xdim => 1
64:       }
65:     end

[Source]

    # File lib/barby/outputter/prawn_outputter.rb, line 76
76:     def document_options(opts, doc_opts)
77:       o = doc_opts.dup
78:       #o[:page_size] ||= page_size(opts[:xdim], opts[:height], opts[:margin])
79:       #%w(left right top bottom).each{|s| o[:"#{s}_margin"] ||= opts[:margin] }
80:       o[:page_size] ||= 'A4' #Prawn doesn't currently support custom page sizes
81:       o
82:     end

[Source]

    # File lib/barby/outputter/prawn_outputter.rb, line 92
92:     def height(height, margin)
93:       height + (margin * 2)
94:     end

[Source]

    # File lib/barby/outputter/prawn_outputter.rb, line 67
67:     def options(opts={})
68:       doc_opts = opts.delete(:document) || {}
69:       opts = default_options.merge(opts)
70:       opts[:x] ||= opts[:margin]
71:       opts[:y] ||= opts[:margin]
72:       opts[:document] = document_options(opts, doc_opts)
73:       opts
74:     end

[Source]

    # File lib/barby/outputter/prawn_outputter.rb, line 84
84:     def page_size(xdim, height, margin)
85:       [width(xdim,margin), height(height,margin)]
86:     end

[Source]

    # File lib/barby/outputter/prawn_outputter.rb, line 88
88:     def width(xdim, margin)
89:       (xdim * encoding.length) + (margin * 2)
90:     end

[Validate]