Skip to content

Commit

Permalink
First working version. Expect many changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Jordan Byron committed Feb 20, 2010
1 parent f27aa19 commit cf876a6
Show file tree
Hide file tree
Showing 8 changed files with 474 additions and 28 deletions.
340 changes: 340 additions & 0 deletions COPYING

Large diffs are not rendered by default.

56 changes: 56 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
Prawn/Labels is copyrighted free software produced by Jordan Byron along with
community contributions. See git log for authorship information.

Licensing terms follow (License of Ruby 1.8):

You can redistribute Prawn and/or modify it under either the terms of the GPL
(see COPYING file), or the conditions below:

1. You may make and give away verbatim copies of the source form of the
software without restriction, provided that you duplicate all of the
original copyright notices and associated disclaimers.

2. You may modify your copy of the software in any way, provided that
you do at least ONE of the following:

a) place your modifications in the Public Domain or otherwise
make them Freely Available, such as by posting said
modifications to Usenet or an equivalent medium, or by allowing
the author to include your modifications in the software.

b) use the modified software only within your corporation or
organization.

c) rename any non-standard executables so the names do not conflict
with standard executables, which must also be provided.

d) make other distribution arrangements with the author.

3. You may distribute the software in object code or executable
form, provided that you do at least ONE of the following:

a) distribute the executables and library files of the software,
together with instructions (in the manual page or equivalent)
on where to get the original distribution.

b) accompany the distribution with the machine-readable source of
the software.

c) give non-standard executables non-standard names, with
instructions on where to get the original software distribution.

d) make other distribution arrangements with the author.

4. You may modify and include the part of the software into any other
software (possibly commercial).

5. The scripts and library files supplied as input to or produced as
output from the software do not automatically fall under the
copyright of the software, but belong to whomever generated them,
and may be sold commercially, and may be aggregated with this
software.

6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.
7 changes: 7 additions & 0 deletions README
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
== Prawn/Labels: A simple helper to generate labels for Prawn PDFs

Prawn/Labels takes the guess work out of generating labels using Prawn

== Usage

See the examples/ directory
1 change: 1 addition & 0 deletions examples/example_helper.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'rubygems'
require 'prawn/core'
require 'prawn/labels'
Prawn.debug = true
8 changes: 8 additions & 0 deletions examples/hello_labels.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
require File.join(File.dirname(__FILE__), "example_helper")

Prawn::Labels.generate("hello_labels.pdf", :type => "Avery5160") do |pdf,cell|
pdf.text cell.name
pdf.stroke do
pdf.rectangle(pdf.bounds.top_left, cell.width, cell.height)
end
end
75 changes: 47 additions & 28 deletions lib/prawn/labels.rb
Original file line number Diff line number Diff line change
@@ -1,40 +1,59 @@
# labels.rb : A simple helper to generate labels for Prawn PDFs
#
# Copyright February 2010, Jordan Byron. All Rights Reserved.
#
# This is free software. Please see the LICENSE and COPYING files for details.

require 'prawn/layout'

module Prawn
class Document
module Prawn
class Labels
attr_reader :document, :type

def labels(data, options={}, &block)
@labels = Labels.new(data,options,&block)
def self.generate(file_name, options = {}, &block)
labels = Labels.new(options,&block)

labels.document.render_file(file_name)
end


class Labels
attr_reader :labels, :data
def initialize(options={}, &block)
types_file = File.join(File.dirname(__FILE__), 'types.yaml')
types = YAML.load_file(types_file)

# Creates the label grid and a label object for each data element
def initialize(data, options = {}, &block)
@data = data

generate_labels

define_grid
unless type = types[options[:type]]
raise "Label Type Unknown '#{options[:type]}'"
end

class Label
attr_reader :data

def initialize(data)
@data = data
end

@document = Document.new :left_margin => type["left_margin"],
:right_margin => type["right_margin"]

generate_grid type

create_labels do |pdf,cell|
yield pdf,cell
end

private

def generate_labels
@labels = []

end

private

@data.each do |d|
@labels << Label.new(data)
def generate_grid(type)

@document.instance_eval do
define_grid :columns => type["columns"],
:rows => type["rows"],
:column_gutter => type["column_gutter"],
:row_gutter => type["row_gutter"]
end
end

def create_labels(&block)
@document.grid.rows.times do |i|
@document.grid.columns.times do |j|
b = @document.grid(i,j)
@document.bounding_box b.top_left, :width => b.width, :height => b.height do
yield(@document, b)
end
end
end
end
Expand Down
15 changes: 15 additions & 0 deletions lib/prawn/types.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#
# prawns' basic unit is PostScript-Point
# 72 points per inch
#
Avery5160:
left_margin: 15.822
right_margin: 15.822
columns: 3
rows: 10
column_gutter: 10
row_gutter: 0
TEST:
left_margin: 123
right_margin: 789

Binary file added lib/test.pdf
Binary file not shown.

0 comments on commit cf876a6

Please sign in to comment.