gbdev-pdf_filler 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/pdf_filler.rb +8 -9
- data/lib/pdf_filler/book.rb +59 -0
- data/lib/pdf_filler/page.rb +69 -0
- data/lib/pdf_filler/util_methods.rb +7 -2
- data/spec/lib/pdf_book_spec.rb +53 -0
- data/spec/lib/pdf_page_spec.rb +19 -0
- data/tasks/build_gem.rake +6 -6
- metadata +10 -9
- data/lib/pdf_filler/fill_pdf_collection.rb +0 -79
- data/lib/pdf_filler/fill_pdf_template.rb +0 -65
- data/spec/lib/pdf_builder_spec.rb +0 -60
- data/spec/lib/pdf_collection_builder_spec.rb +0 -12
data/lib/pdf_filler.rb
CHANGED
@@ -17,19 +17,18 @@ PdfStamper = Rjb::import('com.lowagie.text.pdf.PdfStamper')
|
|
17
17
|
HashMap = Rjb::import('java.util.HashMap')
|
18
18
|
|
19
19
|
require 'pdf_filler/util_methods'
|
20
|
-
require 'pdf_filler/
|
21
|
-
require 'pdf_filler/
|
20
|
+
require 'pdf_filler/page'
|
21
|
+
require 'pdf_filler/book'
|
22
22
|
|
23
23
|
|
24
24
|
module Kernel
|
25
25
|
|
26
|
-
def
|
27
|
-
|
28
|
-
p = Gbdev::PdfOperations::FillCollection.new(pdf_options)
|
29
|
-
else
|
30
|
-
p = Gbdev::PdfOperations::FillTemplate.new(pdf_options)
|
31
|
-
end
|
32
|
-
p.compile_pdf
|
26
|
+
def PDFPage(template)
|
27
|
+
GBDev::PDF::Page.new(template)
|
33
28
|
end
|
34
29
|
|
30
|
+
def PDFBook()
|
31
|
+
GBDev::PDF::Book.new
|
32
|
+
end
|
33
|
+
|
35
34
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module GBDev
|
2
|
+
|
3
|
+
module PDF
|
4
|
+
|
5
|
+
# A book that represents collection of PDF page.
|
6
|
+
class Book
|
7
|
+
|
8
|
+
def initialize()
|
9
|
+
@pages = []
|
10
|
+
end
|
11
|
+
|
12
|
+
# Add a page to the book
|
13
|
+
def add_page(new_page)
|
14
|
+
@pages << new_page
|
15
|
+
end
|
16
|
+
|
17
|
+
# Renders the book with the given pages and saves to the given filename path.
|
18
|
+
#
|
19
|
+
# String filename : A path to the file to be created.
|
20
|
+
def save_to(filename)
|
21
|
+
dir = File.dirname(filename)
|
22
|
+
temp_dir = [dir, "collection_temp_#{build_random_string}"].join('/')
|
23
|
+
Dir.mkdir(temp_dir)
|
24
|
+
@pages.each_with_index do |page, indx|
|
25
|
+
page.save_to([temp_dir, "#{indx}_#{build_random_file_name}"].join('/'))
|
26
|
+
end
|
27
|
+
temp_files = Dir[[temp_dir,'*'].join('/')].sort
|
28
|
+
|
29
|
+
document = Document.new
|
30
|
+
copier = PdfCopy.new(document, FileOutputStream.new(filename))
|
31
|
+
|
32
|
+
document.open
|
33
|
+
temp_files.each do |read_target|
|
34
|
+
reader = PdfReader.new(read_target)
|
35
|
+
n_pages = reader.getNumberOfPages
|
36
|
+
n_pages.times do |i|
|
37
|
+
copier.addPage( copier.getImportedPage(reader, i+1)) if copier
|
38
|
+
end
|
39
|
+
end
|
40
|
+
document.close
|
41
|
+
|
42
|
+
FileUtils.rm_rf(temp_dir, {:secure => true})
|
43
|
+
end
|
44
|
+
|
45
|
+
def display
|
46
|
+
end
|
47
|
+
|
48
|
+
def save_and_display(filename)
|
49
|
+
save(filename)
|
50
|
+
display
|
51
|
+
end
|
52
|
+
|
53
|
+
include Gbdev::Utils::PrivateMethods
|
54
|
+
|
55
|
+
end # End Filler
|
56
|
+
|
57
|
+
end # End PDF
|
58
|
+
|
59
|
+
end # End GBDev
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module GBDev
|
2
|
+
|
3
|
+
module PDF
|
4
|
+
|
5
|
+
# A page that represents a PDF page.
|
6
|
+
class Page
|
7
|
+
|
8
|
+
# String template : A path to the template file
|
9
|
+
def initialize(template)
|
10
|
+
@template = template
|
11
|
+
@fields = {}
|
12
|
+
@images = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
# Sets a known text field in the PDF template.
|
16
|
+
#
|
17
|
+
# key : A known field in the PDF.
|
18
|
+
# value : The value to apply to the know field.
|
19
|
+
def set_text(key, value)
|
20
|
+
@fields[key] = value
|
21
|
+
end
|
22
|
+
|
23
|
+
# Alias for set_text method
|
24
|
+
alias :text :set_text
|
25
|
+
|
26
|
+
# Sets a know image area in the PDF template.
|
27
|
+
#
|
28
|
+
# key : A known field in the PDF.
|
29
|
+
# value : The image to apply to the know image area.
|
30
|
+
def set_image(key, value)
|
31
|
+
@images[key] = value
|
32
|
+
end
|
33
|
+
|
34
|
+
# Alias for the set_image method
|
35
|
+
alias :image :set_image
|
36
|
+
|
37
|
+
# Renders the template with the given data and saves to the given filename path.
|
38
|
+
#
|
39
|
+
# String filename : A path to the file to be created.
|
40
|
+
def save_to(filename)
|
41
|
+
field_cache = HashMap.new
|
42
|
+
reader = PdfReader.new(@template)
|
43
|
+
stamper = PdfStamper.new( reader, FileOutputStream.new(filename) )
|
44
|
+
form = stamper.getAcroFields()
|
45
|
+
form.setFieldCache(field_cache)
|
46
|
+
|
47
|
+
@fields.each do |field, value|
|
48
|
+
form.setField(field.to_s, value.to_s)
|
49
|
+
end
|
50
|
+
|
51
|
+
stamper.setFormFlattening(true)
|
52
|
+
stamper.close
|
53
|
+
end
|
54
|
+
|
55
|
+
def display
|
56
|
+
end
|
57
|
+
|
58
|
+
def save_and_display(filename)
|
59
|
+
save(filename)
|
60
|
+
display
|
61
|
+
end
|
62
|
+
|
63
|
+
include Gbdev::Utils::PrivateMethods
|
64
|
+
|
65
|
+
end # End Page
|
66
|
+
|
67
|
+
end # End PDF
|
68
|
+
|
69
|
+
end # End GBDev
|
@@ -1,10 +1,15 @@
|
|
1
1
|
module Gbdev
|
2
2
|
module Utils
|
3
|
+
|
3
4
|
module PrivateMethods
|
4
5
|
|
5
|
-
def
|
6
|
+
def build_random_string # :nodoc:
|
6
7
|
letters_array = [('a'..'z'),('A'..'Z')].collect{|i| i.to_a}.flatten
|
7
|
-
(1..10).collect{ letters_array[ rand(letters_array.length) ] }.join
|
8
|
+
(1..10).collect{ letters_array[ rand(letters_array.length) ] }.join
|
9
|
+
end
|
10
|
+
|
11
|
+
def build_random_file_name # :nodoc:
|
12
|
+
build_random_string << '.pdf'
|
8
13
|
end
|
9
14
|
|
10
15
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
describe 'Book' do
|
4
|
+
|
5
|
+
it 'should create the book of pages and write to the output directory' do
|
6
|
+
book = GBDev::PDF::Book.new
|
7
|
+
|
8
|
+
template_file = File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf')
|
9
|
+
pdf_book = File.expand_path(File.dirname(__FILE__) + '/../output/certs.pdf')
|
10
|
+
|
11
|
+
page1 = GBDev::PDF::Page.new(template_file)
|
12
|
+
page1.set_text(:full_name, 'Wes Hays')
|
13
|
+
|
14
|
+
page2 = GBDev::PDF::Page.new(template_file)
|
15
|
+
page2.set_text(:full_name, 'Darren Johnson')
|
16
|
+
|
17
|
+
page3 = GBDev::PDF::Page.new(template_file)
|
18
|
+
page3.set_text(:full_name, 'John Dell')
|
19
|
+
|
20
|
+
book.add_page(page1)
|
21
|
+
book.add_page(page2)
|
22
|
+
book.add_page(page3)
|
23
|
+
|
24
|
+
book.save_to(pdf_book)
|
25
|
+
|
26
|
+
File.exist?(pdf_book).should be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should create the book of pages and write to the output directory with Kernel method' do
|
30
|
+
book = PDFBook()
|
31
|
+
|
32
|
+
template_file = File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf')
|
33
|
+
pdf_book = File.expand_path(File.dirname(__FILE__) + '/../output/certs.pdf')
|
34
|
+
|
35
|
+
page1 = GBDev::PDF::Page.new(template_file)
|
36
|
+
page1.set_text(:full_name, 'Wes Hays')
|
37
|
+
|
38
|
+
page2 = GBDev::PDF::Page.new(template_file)
|
39
|
+
page2.set_text(:full_name, 'Darren Johnson')
|
40
|
+
|
41
|
+
page3 = GBDev::PDF::Page.new(template_file)
|
42
|
+
page3.set_text(:full_name, 'John Dell')
|
43
|
+
|
44
|
+
book.add_page(page1)
|
45
|
+
book.add_page(page2)
|
46
|
+
book.add_page(page3)
|
47
|
+
|
48
|
+
book.save_to(pdf_book)
|
49
|
+
|
50
|
+
File.exist?(pdf_book).should be_true
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
describe 'Page' do
|
4
|
+
|
5
|
+
it 'should create the page and write to the output directory' do
|
6
|
+
page = GBDev::PDF::Page.new(File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf'))
|
7
|
+
page.set_text(:full_name, 'Wes Hays')
|
8
|
+
page.save_to(File.expand_path(File.dirname(__FILE__) + '/../output/wes_hays.pdf'))
|
9
|
+
File.exist?(File.dirname(__FILE__) + '/../output/wes_hays.pdf').should be_true
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should create the page and write to the output directory with Kernel method' do
|
13
|
+
page = PDFPage(File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf'))
|
14
|
+
page.set_text(:full_name, 'Wes Hays')
|
15
|
+
page.save_to(File.expand_path(File.dirname(__FILE__) + '/../output/wes_hays.pdf'))
|
16
|
+
File.exist?(File.dirname(__FILE__) + '/../output/wes_hays.pdf').should be_true
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/tasks/build_gem.rake
CHANGED
@@ -25,19 +25,19 @@ begin
|
|
25
25
|
'init.rb',
|
26
26
|
'lib/iText-2.1.7.jar',
|
27
27
|
'lib/pdf_filler.rb',
|
28
|
-
'lib/pdf_filler/
|
29
|
-
'lib/pdf_filler/
|
28
|
+
'lib/pdf_filler/page.rb',
|
29
|
+
'lib/pdf_filler/book.rb',
|
30
30
|
'lib/pdf_filler/util_methods.rb',
|
31
31
|
'tasks/documentation.rake',
|
32
32
|
'tasks/build_gem.rake',
|
33
33
|
'spec/spec_helper.rb',
|
34
|
-
'spec/lib/
|
35
|
-
'spec/lib/
|
34
|
+
'spec/lib/pdf_page_spec.rb',
|
35
|
+
'spec/lib/pdf_book_spec.rb',
|
36
36
|
'spec/output',
|
37
37
|
'spec/templates/certificate_template.pdf']
|
38
38
|
|
39
|
-
gem.test_files = ['spec/lib/
|
40
|
-
'spec/lib/
|
39
|
+
gem.test_files = ['spec/lib/pdf_page_spec.rb',
|
40
|
+
'spec/lib/pdf_book_spec.rb']
|
41
41
|
|
42
42
|
gem.add_dependency 'rjb', '>= 1.1.7'
|
43
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gbdev-pdf_filler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wes Hays
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-08-01 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -40,17 +40,18 @@ files:
|
|
40
40
|
- init.rb
|
41
41
|
- lib/iText-2.1.7.jar
|
42
42
|
- lib/pdf_filler.rb
|
43
|
-
- lib/pdf_filler/
|
44
|
-
- lib/pdf_filler/
|
43
|
+
- lib/pdf_filler/book.rb
|
44
|
+
- lib/pdf_filler/page.rb
|
45
45
|
- lib/pdf_filler/util_methods.rb
|
46
|
-
- spec/lib/
|
47
|
-
- spec/lib/
|
46
|
+
- spec/lib/pdf_book_spec.rb
|
47
|
+
- spec/lib/pdf_page_spec.rb
|
48
48
|
- spec/spec_helper.rb
|
49
49
|
- spec/templates/certificate_template.pdf
|
50
50
|
- tasks/build_gem.rake
|
51
51
|
- tasks/documentation.rake
|
52
52
|
has_rdoc: false
|
53
53
|
homepage: http://wiki.github.com/gbdev/pdf-filler
|
54
|
+
licenses:
|
54
55
|
post_install_message:
|
55
56
|
rdoc_options:
|
56
57
|
- --charset=UTF-8
|
@@ -77,10 +78,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
78
|
requirements: []
|
78
79
|
|
79
80
|
rubyforge_project:
|
80
|
-
rubygems_version: 1.
|
81
|
+
rubygems_version: 1.3.5
|
81
82
|
signing_key:
|
82
83
|
specification_version: 3
|
83
84
|
summary: A Rails plugin to fill a PDF form using RJB and iText.
|
84
85
|
test_files:
|
85
|
-
- spec/lib/
|
86
|
-
- spec/lib/
|
86
|
+
- spec/lib/pdf_page_spec.rb
|
87
|
+
- spec/lib/pdf_book_spec.rb
|
@@ -1,79 +0,0 @@
|
|
1
|
-
module Gbdev
|
2
|
-
|
3
|
-
module PdfOperations
|
4
|
-
|
5
|
-
class FillCollection
|
6
|
-
|
7
|
-
# Fill a PDF form based on the options specified.
|
8
|
-
#
|
9
|
-
# Hash pdf_options : A hash of parameters for filling the PDF form.
|
10
|
-
# [data] An array of hashes of fields to fill the pdf template with. Example: [{:field => 'value'}, {:field => 'value'}].
|
11
|
-
# [template] The full path to the PDF form to fill.
|
12
|
-
# [dir] The directory to write filled form to.
|
13
|
-
# [file_name] (optional) The name of the output file to create. If not specified a random
|
14
|
-
# file name will be used.
|
15
|
-
#
|
16
|
-
# Exceptons :
|
17
|
-
# 1) If any of the required hash options from pdf_options is missing.
|
18
|
-
def initialize(pdf_options = {})
|
19
|
-
if !pdf_options.has_key?(:data) or !pdf_options.has_key?(:template) or !pdf_options.has_key?(:dir)
|
20
|
-
raise 'All options parameters (data, template, dir) are required'
|
21
|
-
end
|
22
|
-
|
23
|
-
unless File.exist?(pdf_options[:template])
|
24
|
-
raise 'Template file does not exist or path is wrong'
|
25
|
-
end
|
26
|
-
|
27
|
-
if pdf_options[:data].class.to_s != 'Array' or
|
28
|
-
(pdf_options[:data].class.to_s == 'Array' and pdf_options[:data][0].class.to_s != 'Hash')
|
29
|
-
raise 'Data must array of hashes'
|
30
|
-
end
|
31
|
-
|
32
|
-
unless File.directory?(pdf_options[:dir])
|
33
|
-
raise 'Output directory does not exist or path is wrong'
|
34
|
-
end
|
35
|
-
|
36
|
-
@data = pdf_options[:data]
|
37
|
-
@template = pdf_options[:template]
|
38
|
-
@dir = pdf_options[:dir]
|
39
|
-
@file_name = pdf_options.has_key?(:file_name) ? pdf_options[:file_name] : build_random_file_name
|
40
|
-
end
|
41
|
-
|
42
|
-
def compile_pdf
|
43
|
-
temp_dir = [@dir, 'collection_temp'].join('/')
|
44
|
-
Dir.mkdir(temp_dir)
|
45
|
-
@data.each do |hash_data|
|
46
|
-
opts = {:data => hash_data,
|
47
|
-
:template => @template,
|
48
|
-
:dir => temp_dir}
|
49
|
-
p = Gbdev::PdfOperations::FillTemplate.new(opts)
|
50
|
-
p.compile_pdf
|
51
|
-
end
|
52
|
-
|
53
|
-
temp_files = Dir[[temp_dir,'*'].join('/')]
|
54
|
-
|
55
|
-
document = Document.new
|
56
|
-
copier = PdfCopy.new(document, FileOutputStream.new([@dir,@file_name].join('/')))
|
57
|
-
|
58
|
-
document.open
|
59
|
-
temp_files.each do |read_target|
|
60
|
-
reader = PdfReader.new(read_target)
|
61
|
-
n_pages = reader.getNumberOfPages
|
62
|
-
n_pages.times do |i|
|
63
|
-
copier.addPage( copier.getImportedPage(reader, i+1)) if copier
|
64
|
-
end
|
65
|
-
end
|
66
|
-
document.close
|
67
|
-
|
68
|
-
FileUtils.rm_rf(temp_dir, {:secure => true})
|
69
|
-
end
|
70
|
-
|
71
|
-
private
|
72
|
-
|
73
|
-
include Gbdev::Utils::PrivateMethods
|
74
|
-
|
75
|
-
end # End FillCollection
|
76
|
-
|
77
|
-
end # End PdfOperations
|
78
|
-
|
79
|
-
end # End Gbdev
|
@@ -1,65 +0,0 @@
|
|
1
|
-
module Gbdev
|
2
|
-
|
3
|
-
module PdfOperations
|
4
|
-
|
5
|
-
class FillTemplate
|
6
|
-
|
7
|
-
# Fills a PDF form based on the options specified.
|
8
|
-
#
|
9
|
-
# Hash pdf_options : A hash of parameters for filling the PDF form.
|
10
|
-
# [data] Hash of fields to fill and what to fill them with. Example: {:field => 'value'}.
|
11
|
-
# [template] The full path to the PDF form to fill.
|
12
|
-
# [dir] The directory to write filled form to.
|
13
|
-
# [file_name] (optional) The name of the output file to create. If not specified a random
|
14
|
-
# file name will be used.
|
15
|
-
#
|
16
|
-
# Exceptons :
|
17
|
-
# 1) If any of the required hash options from pdf_options is missing.
|
18
|
-
def initialize(pdf_options = {})
|
19
|
-
if !pdf_options.has_key?(:data) or !pdf_options.has_key?(:template) or !pdf_options.has_key?(:dir)
|
20
|
-
raise 'Option parameters data, template, dir are required'
|
21
|
-
end
|
22
|
-
|
23
|
-
unless File.exist?(pdf_options[:template])
|
24
|
-
raise 'Template file does not exist or path is wrong'
|
25
|
-
end
|
26
|
-
|
27
|
-
if ['Hash'].index(pdf_options[:data].class.to_s).nil?
|
28
|
-
raise 'Data must be a hash'
|
29
|
-
end
|
30
|
-
|
31
|
-
unless File.directory?(pdf_options[:dir])
|
32
|
-
raise 'Output directory does not exist or path is wrong'
|
33
|
-
end
|
34
|
-
|
35
|
-
@data = pdf_options[:data]
|
36
|
-
@template = pdf_options[:template]
|
37
|
-
@dir = pdf_options[:dir]
|
38
|
-
@file_name = pdf_options.has_key?(:file_name) ? pdf_options[:file_name] : build_random_file_name
|
39
|
-
end
|
40
|
-
|
41
|
-
# Compiles the new PDF from the template and data given
|
42
|
-
def compile_pdf
|
43
|
-
field_cache = HashMap.new
|
44
|
-
reader = PdfReader.new(@template)
|
45
|
-
stamper = PdfStamper.new( reader, FileOutputStream.new([@dir, @file_name].join('/')) )
|
46
|
-
form = stamper.getAcroFields()
|
47
|
-
form.setFieldCache(field_cache)
|
48
|
-
|
49
|
-
@data.each do |field,value|
|
50
|
-
form.setField(field.to_s, value.to_s)
|
51
|
-
end
|
52
|
-
|
53
|
-
stamper.setFormFlattening(true)
|
54
|
-
stamper.close
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
include Gbdev::Utils::PrivateMethods
|
60
|
-
|
61
|
-
end # End FillTemplate
|
62
|
-
|
63
|
-
end # End PdfOperations
|
64
|
-
|
65
|
-
end # End Gbdev
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
-
|
3
|
-
describe 'PdfFiller' do
|
4
|
-
it 'should be initialized without errors' do
|
5
|
-
opts = {:data => {:full_name => 'Wes Hays'},
|
6
|
-
:template => File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf'),
|
7
|
-
:dir => File.expand_path(File.dirname(__FILE__) + '/../output/')}
|
8
|
-
ff = PdfFiller(opts)
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'should be use the output filename specified' do
|
12
|
-
opts = {:data => {:full_name => 'Wes Hays'},
|
13
|
-
:template => File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf'),
|
14
|
-
:dir => File.expand_path(File.dirname(__FILE__) + '/../output/'),
|
15
|
-
:file_name => 'wes_hays.pdf'}
|
16
|
-
ff = PdfFiller(opts)
|
17
|
-
File.exist?([opts[:dir], opts[:file_name]].join('/')).should be_true
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should raise exception if options[:data] not set' do
|
21
|
-
opts = {:template => File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf'),
|
22
|
-
:dir => File.expand_path(File.dirname(__FILE__) + '/../output/')}
|
23
|
-
doing {PdfFiller(opts)}.should raise_error('Option parameters data, template, dir are required')
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'should raise exception if options[:template] not set' do
|
27
|
-
opts = {:data => {:full_name => 'Wes Hays'},
|
28
|
-
:dir => File.expand_path(File.dirname(__FILE__) + '/../output/')}
|
29
|
-
doing {PdfFiller(opts)}.should raise_error('Option parameters data, template, dir are required')
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'should raise exception if options[:dir] not set' do
|
33
|
-
opts = {:data => {:full_name => 'Wes Hays'},
|
34
|
-
:template => File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf')}
|
35
|
-
doing {PdfFiller(opts)}.should raise_error('Option parameters data, template, dir are required')
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
it 'should raise exception if options[:data] is not a hash or an array of hashes' do
|
40
|
-
opts = {:data => 'dog',
|
41
|
-
:template => File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf'),
|
42
|
-
:dir => File.expand_path(File.dirname(__FILE__) + '/../output/')}
|
43
|
-
doing {PdfFiller(opts)}.should raise_error('Data must be a hash')
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'should raise exception if certificate template does not exist' do
|
47
|
-
opts = {:data => {:full_name => 'Wes Hays'},
|
48
|
-
:template => 'dog/templates/certificate_template.pdf',
|
49
|
-
:dir => File.expand_path(File.dirname(__FILE__) + '/../output/')}
|
50
|
-
doing {PdfFiller(opts)}.should raise_error('Template file does not exist or path is wrong')
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'should raise exception if options[:dir] is not a directory' do
|
54
|
-
opts = {:data => {:full_name => 'Wes Hays'},
|
55
|
-
:template => File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf'),
|
56
|
-
:dir => '/../output/'}
|
57
|
-
doing {PdfFiller(opts)}.should raise_error('Output directory does not exist or path is wrong')
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
-
|
3
|
-
describe 'FormCollection' do
|
4
|
-
it 'should be initialized without errors' do
|
5
|
-
opts = {:data => [{:full_name => 'Wes Hays'}, {:full_name => 'Darren Johnson'}],
|
6
|
-
:template => File.expand_path(File.dirname(__FILE__) + '/../templates/certificate_template.pdf'),
|
7
|
-
:dir => File.expand_path(File.dirname(__FILE__) + '/../output/'),
|
8
|
-
:file_name => 'people.pdf'}
|
9
|
-
ff = PdfFiller(opts)
|
10
|
-
File.exist?([opts[:dir], opts[:file_name]].join('/')).should be_true
|
11
|
-
end
|
12
|
-
end
|