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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fc6a0737c6a29a0072ea57cc765ba771adc543e4
4
- data.tar.gz: 439fcfc05235d4b3139b7d143e302da9973da257
3
+ metadata.gz: e3a9c0f4277d392c7dd3b1b94d15dadcbf014e77
4
+ data.tar.gz: f5d7599ddce561c8f1a72aceb37e978891538777
5
5
  SHA512:
6
- metadata.gz: 5f20122e4eeb18a56000f43a1284b4cb4d96f9da6fcd0a5acadea019377cb0077d0e642841628bf52e8cb6302c11daa9415585ddab6cab91f4b25a44d992fa0e
7
- data.tar.gz: 6048dad087e5491eec13b1fe5e16a867e7e44182086fe711f9e38e05bcecc1074d8c8415874a96081610fd3a6e84ac7aaf518fa4d2d37b6839f34a33a8e82b34
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
@@ -15,12 +15,11 @@ module PdflibWrapper
15
15
 
16
16
  class << self
17
17
  def embed(pdf, page, x, y, opts)
18
- #TODO: support more opts
19
- opts_string = ""
20
- opts_string << "dpi=#{opts[:dpi]} " if opts[:dpi]
21
- opts_string << "boxsize={#{opts[:box_size][0]} #{opts[:box_size][1]}} " if opts[:box_size] && opts[:box_size].is_a?(Array)
22
- opts_string << opts[:fit_options].join(' ') if opts[:fit_options] && opts[:fit_options].is_a?(Array)
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
 
@@ -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
- begin_doc_opts = ""
14
- begin_doc_opts << "masterpassword=#{opts[:master_password]} " if opts[:master_password]
15
- begin_doc_opts << "permissions={#{opts[:permissions].join(' ')}} " if opts[:permissions] && opts[:permissions].is_a?(Array)
16
- @pdf.begin_document(filepath.to_s, begin_doc_opts)
17
-
18
- @pdf.set_info("Subject", metadata[:subject]) if metadata[:subject]
19
- @pdf.set_info("Title", metadata[:title]) if metadata[:title]
20
- @pdf.set_info("Creator", metadata[:creator]) if metadata[:creator]
21
- @pdf.set_info("Author", metadata[:author]) if metadata[:author]
22
- @pdf.set_info("Keywords", metadata[:keywords].join(', ')) if metadata[:keywords] && metadata[:keywords].is_a?(Array)
23
- @pdf.set_info("Trapped", metadata[:trapped]) if opts[:trapped] && [true, false].include?(opts[:trapped])
24
-
25
- #TODO: support more of the Global Options of pdflib
26
- @pdf.set_parameter("licensefile", opts[:license_path] ) if opts[:license_path]
27
- @pdf.set_value("compress", opts[:compress] ) if opts[:compress] && opts[:compress].is_a?(Fixnum)
28
-
29
- @current_page = Page.new(@pdf, 1, 1).save if opts[:with_blank_page]
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.dup)
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.dup)
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={})
@@ -1,3 +1,3 @@
1
1
  module PdflibWrapper
2
- VERSION = '0.0.1.alpha'
2
+ VERSION = '0.0.1'
3
3
  end
@@ -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
- require 'os'
7
- require 'PDFlib.bundle' if OS.mac?
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
@@ -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
@@ -1 +1,2 @@
1
1
  require 'pdflib_wrapper'
2
+ require 'option_list_mapper'
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.alpha
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-17 00:00:00.000000000 Z
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: 1.3.1
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