pdflib_wrapper 0.0.1.alpha → 0.0.1
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.
- checksums.yaml +4 -4
- data/lib/option_list_mapper.rb +50 -0
- data/lib/pdflib_wrapper/page.rb +5 -6
- data/lib/pdflib_wrapper/pdf.rb +19 -19
- data/lib/pdflib_wrapper/version.rb +1 -1
- data/lib/pdflib_wrapper.rb +9 -4
- data/spec/option_list_mapper_spec.rb +26 -0
- data/spec/pdflib_wrapper_spec.rb +4 -0
- data/spec/spec_helper.rb +1 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3a9c0f4277d392c7dd3b1b94d15dadcbf014e77
|
4
|
+
data.tar.gz: f5d7599ddce561c8f1a72aceb37e978891538777
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efa66b4dfa354ca340d0548b45db6953caa0e01d71fe3f0f171bb47664f917e996663e07ce8726d1f15aeadd41f1aeb6d60c18e143da392e293e52fcbd985bba
|
7
|
+
data.tar.gz: 7bc89e70ad8405c43f2efea4e504b1dc28bf7ac78bb3a9812bfe6a325b7fcd7f9bd8c756293c2accafa11ff232d85224eb87d1a210b1e7ce99c6777845584494
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class OptionListMapper
|
2
|
+
#simple should return array of hashes {:key => value}
|
3
|
+
#list should return array of one dimensional hashes that the value is an array {:key => [value, value]}
|
4
|
+
#optionally list may return a value that is a hash that will be converted to simple or list
|
5
|
+
attr_accessor :modified_options
|
6
|
+
def initialize(options_list,kvs,singles,opts)
|
7
|
+
options = opts.dup
|
8
|
+
@modified_options = options_list
|
9
|
+
kvs.each do |key|
|
10
|
+
next if options[key].nil?
|
11
|
+
OptionListMapper.map_to_string(@modified_options, key, options[key])
|
12
|
+
@modified_options << ' '
|
13
|
+
end
|
14
|
+
@modified_options << singles.map{|key| options[key]}.flatten.join(' ')
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
|
19
|
+
def create_options(options_list="",kvs=[],singles=[],opts={})
|
20
|
+
new(options_list,kvs,singles,opts).modified_options
|
21
|
+
end
|
22
|
+
|
23
|
+
def map_to_string(string, key, value, display_brackets=true, display_key=true)
|
24
|
+
string << "#{key}=" if display_key
|
25
|
+
if not value.is_a?(Array) and not value.is_a?(Hash)
|
26
|
+
string << value.to_s
|
27
|
+
elsif value.is_a?(Array)
|
28
|
+
string << '{' if display_brackets
|
29
|
+
value.each_with_index{|v, index|
|
30
|
+
if v.is_a?(Array)
|
31
|
+
map_to_string(string, key, v, true, false)
|
32
|
+
elsif v.is_a?(Hash)
|
33
|
+
map_to_string(string, key, v, false, false)
|
34
|
+
else
|
35
|
+
string << v.to_s
|
36
|
+
end
|
37
|
+
string << ' ' unless index == value.size - 1
|
38
|
+
}
|
39
|
+
string << '}' if display_brackets
|
40
|
+
elsif value.is_a?(Hash)
|
41
|
+
string << '{' if display_brackets
|
42
|
+
map_to_string(string, value.keys.first, value.values.first)
|
43
|
+
string << '}' if display_brackets
|
44
|
+
end
|
45
|
+
string
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/lib/pdflib_wrapper/page.rb
CHANGED
@@ -15,12 +15,11 @@ module PdflibWrapper
|
|
15
15
|
|
16
16
|
class << self
|
17
17
|
def embed(pdf, page, x, y, opts)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
pdf.fit_pdi_page(page.page, x, y, opts_string)
|
18
|
+
key_values = [:dpi, :boxsize, :rotate, :blind, :matchbox, :orientate, :position, :showborder]
|
19
|
+
#fitmethod => [:fitmethod, :meet], scale => [:scale => 3.0]
|
20
|
+
#fitmethod => 'fitmethod meet', scale => 'scale 3.0'
|
21
|
+
singles = [:fitmethod, :scale]
|
22
|
+
pdf.fit_pdi_page(page.page, x, y, OptionListMapper.create_options('', key_values, [], opts))
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
data/lib/pdflib_wrapper/pdf.rb
CHANGED
@@ -10,23 +10,23 @@ module PdflibWrapper
|
|
10
10
|
@pdf.set_parameter("errorpolicy", opts[:errorpolicy] || "exception")
|
11
11
|
|
12
12
|
#TODO: better support for begin document options
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
13
|
+
unless opts[:dont_create_document]
|
14
|
+
key_values = [:masterpassword, :userpassword, :permissions, :moddate]
|
15
|
+
@pdf.begin_document(filepath.to_s, OptionListMapper.create_options('', key_values, [], opts))
|
16
|
+
|
17
|
+
@pdf.set_info("Subject", metadata[:subject]) if metadata[:subject]
|
18
|
+
@pdf.set_info("Title", metadata[:title]) if metadata[:title]
|
19
|
+
@pdf.set_info("Creator", metadata[:creator]) if metadata[:creator]
|
20
|
+
@pdf.set_info("Author", metadata[:author]) if metadata[:author]
|
21
|
+
@pdf.set_info("Keywords", metadata[:keywords].join(', ')) if metadata[:keywords] && metadata[:keywords].is_a?(Array)
|
22
|
+
@pdf.set_info("Trapped", metadata[:trapped]) if opts[:trapped] && [true, false].include?(opts[:trapped])
|
23
|
+
|
24
|
+
#TODO: support more of the Global Options of pdflib
|
25
|
+
@pdf.set_parameter("licensefile", opts[:license_path] ) if opts[:license_path] #TODO: check if file exists
|
26
|
+
@pdf.set_value("compress", opts[:compress] ) if opts[:compress] && opts[:compress].is_a?(Fixnum) #TODO: check range (1..9)
|
27
|
+
|
28
|
+
@current_page = Page.new(@pdf, 1, 1).save if opts[:with_blank_page]
|
29
|
+
end
|
30
30
|
end
|
31
31
|
|
32
32
|
def save
|
@@ -69,12 +69,12 @@ module PdflibWrapper
|
|
69
69
|
|
70
70
|
def new_page(width, height, opts={})
|
71
71
|
#TODO: support opts
|
72
|
-
@current_page = Page.new(@pdf, width, height, opts
|
72
|
+
@current_page = Page.new(@pdf, width, height, opts)
|
73
73
|
end
|
74
74
|
|
75
75
|
def open_pdf(filepath, opts={})
|
76
76
|
#TODO: support opts
|
77
|
-
@current_pdf = External::Pdf::Document.new(@pdf, filepath, opts
|
77
|
+
@current_pdf = External::Pdf::Document.new(@pdf, filepath, opts)
|
78
78
|
end
|
79
79
|
|
80
80
|
def open_pdf_page(page_number=1, pdf=nil, opts={})
|
data/lib/pdflib_wrapper.rb
CHANGED
@@ -1,12 +1,17 @@
|
|
1
|
+
require 'os'
|
2
|
+
require 'PDFlib.bundle' if OS.mac?
|
3
|
+
require 'PDFlib.so' if OS.linux?
|
4
|
+
require "PDFlib"
|
5
|
+
|
6
|
+
require "option_list_mapper"
|
7
|
+
|
1
8
|
require "pdflib_wrapper/version"
|
2
9
|
require "pdflib_wrapper/pdf"
|
3
10
|
require "pdflib_wrapper/page"
|
4
11
|
require "pdflib_wrapper/external/pdf/document"
|
5
12
|
require "pdflib_wrapper/external/pdf/page"
|
6
|
-
|
7
|
-
|
8
|
-
require 'PDFlib.so' if OS.linux?
|
9
|
-
require "PDFlib"
|
13
|
+
|
14
|
+
|
10
15
|
|
11
16
|
module PdflibWrapper
|
12
17
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
|
2
|
+
|
3
|
+
describe OptionListMapper do
|
4
|
+
it "maps simple key value pair" do
|
5
|
+
OptionListMapper.map_to_string("",:password, 'test').should eq("password=test")
|
6
|
+
end
|
7
|
+
|
8
|
+
it "maps option with array" do
|
9
|
+
OptionListMapper.map_to_string("", :boxsize, [10,20]).should eq("boxsize={10 20}")
|
10
|
+
end
|
11
|
+
|
12
|
+
it "maps option with an option" do
|
13
|
+
OptionListMapper.map_to_string("", :fill, {area: 'table'}).should eq("fill={area=table}")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "maps option with an array of options" do
|
17
|
+
OptionListMapper.map_to_string("", :fill, [{area: 'table'}, {fillcolor: ['rgb', 1, 0, 0]}]).should eq("fill={area=table fillcolor={rgb 1 0 0}}")
|
18
|
+
end
|
19
|
+
|
20
|
+
it "maps singles and kvs correctly" do
|
21
|
+
opts = {user_password: 'test', master_password: 'testing', permissions: ['nomodify', 'nocopy'], random: 'random', text: 'text'}
|
22
|
+
kvs = [:user_password, :master_password, :permissions]
|
23
|
+
singles = [:random, :text]
|
24
|
+
OptionListMapper.create_options("", kvs,singles,opts).should eq("user_password=test master_password=testing permissions={nomodify nocopy} random text")
|
25
|
+
end
|
26
|
+
end
|
data/spec/pdflib_wrapper_spec.rb
CHANGED
@@ -18,6 +18,10 @@ describe PdflibWrapper do
|
|
18
18
|
File.exists?(filepath).should be_true
|
19
19
|
end
|
20
20
|
|
21
|
+
it "just creates Pdflib handle" do
|
22
|
+
PdflibWrapper::Pdf.new('', {}, {dont_create_document: true})
|
23
|
+
end
|
24
|
+
|
21
25
|
it "embeds pdf inside pdf" do
|
22
26
|
embed_tempfile = Tempfile.new("embed.pdf")
|
23
27
|
embed_pdf = PdflibWrapper::Pdf.new(embed_tempfile.path)
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdflib_wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Studener
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- Rakefile
|
69
69
|
- lib/PDFlib.bundle
|
70
70
|
- lib/PDFlib.so
|
71
|
+
- lib/option_list_mapper.rb
|
71
72
|
- lib/os.rb
|
72
73
|
- lib/pdflib_wrapper.rb
|
73
74
|
- lib/pdflib_wrapper/external/pdf/document.rb
|
@@ -76,6 +77,7 @@ files:
|
|
76
77
|
- lib/pdflib_wrapper/pdf.rb
|
77
78
|
- lib/pdflib_wrapper/version.rb
|
78
79
|
- pdflib_wrapper.gemspec
|
80
|
+
- spec/option_list_mapper_spec.rb
|
79
81
|
- spec/pdflib_wrapper_spec.rb
|
80
82
|
- spec/spec_helper.rb
|
81
83
|
homepage: https://github.com/maxstudener/pdflib_wrapper
|
@@ -93,9 +95,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
95
|
version: '0'
|
94
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
97
|
requirements:
|
96
|
-
- - '
|
98
|
+
- - '>='
|
97
99
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
100
|
+
version: '0'
|
99
101
|
requirements: []
|
100
102
|
rubyforge_project:
|
101
103
|
rubygems_version: 2.0.3
|
@@ -103,5 +105,6 @@ signing_key:
|
|
103
105
|
specification_version: 4
|
104
106
|
summary: Pdflib Wrapper Library
|
105
107
|
test_files:
|
108
|
+
- spec/option_list_mapper_spec.rb
|
106
109
|
- spec/pdflib_wrapper_spec.rb
|
107
110
|
- spec/spec_helper.rb
|