pdfs2pdf 0.0.6 → 0.0.7

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: f61699303fc3242f39bcf101d33b2fa86e799b14
4
- data.tar.gz: 5d59dc62ee411712790a4c6a193e922593b165f9
3
+ metadata.gz: 40d847513b193a6418a3db08e3f1dfdd3f471bc2
4
+ data.tar.gz: f0be5cded86673ad6e2f9e58cdf0ed30a825299d
5
5
  SHA512:
6
- metadata.gz: d043ab8c3fd081b43ed26bd6ff5a3e36bf8d0834bee39317008ca4b40bac14b93a530ffe6b044b82819460c9820138825d3076317b0cc2928475c64bc497363f
7
- data.tar.gz: d61b0241e377d1ebd04e1bc23b5d91181ae080cb8040d42a51ba1772a8c36d31bea28970e78d095d15a1b24a444032882d9fe05162b20c38567803e2613eae29
6
+ metadata.gz: 50daef0b58123a77884540813099de323c2c708260af2f68b9f4d371cff795b764c8b85a7e374c0126bddaec69c2ffe9f333119c927f8dc1ff114cfaaaca07b8
7
+ data.tar.gz: fa12e065db643aaaccf18a616c8a8ce4712ae6347a535f502c70bf0b0706b83f71ddba5b2bb3a37bd17f60c7148fca1f6004cec4da922b51393b249b3c0c1650
data/CHANGELOGS.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ### Changelogs
2
2
 
3
+ #### 0.0.7
4
+
5
+ - Simplify the api by removing some of the options
6
+ * --inc-words
7
+ * --exc-words
8
+ * --ignorecase
9
+ - Rename 'utils.rb' to 'pdfs2pdf.rb'
10
+ - Update gemspec
11
+ - Misc cleanup
12
+
3
13
  #### 0.0.6
4
14
 
5
15
  - Allow options for wkhtmltopdf to be more customizable
File without changes
data/README.md CHANGED
@@ -102,10 +102,6 @@ Usage:
102
102
  Options:
103
103
  -b, [--base-dir=BASE_DIR] # Base directory
104
104
  # Default: . (current directory)
105
- -n, [--inc-words=one two three] # List of words to be included in the result
106
- -x, [--exc-words=one two three] # List of words to be excluded from the result
107
- -i, [--ignore-case], [--no-ignore-case] # Match case insensitively
108
- # Default: true
109
105
  -r, [--recursive], [--no-recursive] # Search for files recursively
110
106
  # Default: true
111
107
  -v, [--version], [--no-version] # Display version information
data/bin/pdfs2pdf CHANGED
@@ -1,9 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require_relative '../lib/pdfs2pdf'
3
-
4
- # The default configuration
5
3
  require_relative '../config/initializers/pdfs2pdf'
6
- Pdfs2Pdf.update_config()
7
-
4
+ Pdfs2Pdf.update_config
8
5
  include Pdfs2Pdf
9
6
  Pdfs2Pdf::CLI.start(ARGV)
@@ -5,6 +5,7 @@ module Pdfs2Pdf
5
5
  # See: ./lib/pdfs2pdf/configuration.rb for available options
6
6
  def update_config
7
7
  Pdfs2Pdf.configure do |config|
8
+ # Note: add your custom config here
8
9
  # config.wkhtmltopdf = '/usr/bin/wkhtmltopdf'
9
10
  # config.default_options = {
10
11
  # paper_size: 'Letter',
data/lib/pdfs2pdf/cli.rb CHANGED
@@ -2,8 +2,8 @@
2
2
  require 'thor'
3
3
  require 'tmpdir'
4
4
  require 'fileutils'
5
+ require_relative './pdfs2pdf'
5
6
  require_relative '../pdfs2pdf'
6
- require_relative './utils'
7
7
  module Pdfs2Pdf
8
8
  include AgileUtils::Options
9
9
  include CodeLister
@@ -11,9 +11,6 @@ module Pdfs2Pdf
11
11
  class CLI < Thor
12
12
  desc 'merge', 'Combine multiple pdfs into one file with bookmarks'
13
13
  method_option *AgileUtils::Options::BASE_DIR
14
- method_option *AgileUtils::Options::INC_WORDS
15
- method_option *AgileUtils::Options::EXC_WORDS
16
- method_option *AgileUtils::Options::IGNORE_CASE
17
14
  method_option *AgileUtils::Options::RECURSIVE
18
15
  method_option *AgileUtils::Options::VERSION
19
16
 
@@ -34,10 +31,6 @@ Usage:
34
31
  Options:
35
32
  -b, [--base-dir=BASE_DIR] # Base directory
36
33
  # Default: . (current directory)
37
- -n, [--inc-words=one two three] # List of words to be included in the result
38
- -x, [--exc-words=one two three] # List of words to be excluded from the result
39
- -i, [--ignore-case], [--no-ignore-case] # Match case insensitively
40
- # Default: true
41
34
  -r, [--recursive], [--no-recursive] # Search for files recursively
42
35
  # Default: true
43
36
  -v, [--version], [--no-version] # Display version information
@@ -52,17 +45,17 @@ Combine multiple pdfs into one file with bookmarks
52
45
 
53
46
  def create_pdfmarks(page_list, base_dir)
54
47
  elapsed = AgileUtils::FileUtil.time do
55
- Pdfs2Pdf::Utils.create_pdfmarks(page_list, 'pdfmarks', base_dir)
48
+ Pdfs2Pdf.create_pdfmarks(page_list, 'pdfmarks', base_dir)
56
49
  end
57
50
  puts "Create pdfmarks took #{elapsed} ms"
58
51
  end
59
52
 
60
53
  def merge_pdfs(pdf_files)
61
54
  elapsed = AgileUtils::FileUtil.time do
62
- Utils.merge_pdfs(pdf_files, 'pdfmarks', 'final_output.pdf')
55
+ Pdfs2Pdf.merge_pdfs(pdf_files, 'pdfmarks', 'pdfs2pdf_output.pdf')
63
56
  end
64
57
  puts "Combine pdf files took #{elapsed} ms"
65
- puts "Your combine pdf is available at #{File.absolute_path('final_output.pdf')}"
58
+ puts "Your combined pdf is available at #{File.absolute_path('pdfs2pdf_output.pdf')}"
66
59
  end
67
60
  end
68
61
  end
@@ -0,0 +1,62 @@
1
+ # coding: utf-8
2
+ require 'open3'
3
+ require 'fileutils'
4
+ require 'pdf-reader'
5
+ require_relative '../pdfs2pdf'
6
+ require_relative './configuration'
7
+ module Pdfs2Pdf
8
+ class << self
9
+ # Create the 'pdfmarks' file for use with 'gs' utility
10
+ #
11
+ # @param [Array<String>] pdf_files the input file list (pdf)
12
+ # @param [String] output_file the output filename default to 'pdfmarks'
13
+ # @param [String] base_dir the base directory (TODO: review this code!)
14
+ def create_pdfmarks(pdf_files, pdfmarks_file = 'pdfmarks', base_dir = Dir.pwd)
15
+ File.open(pdfmarks_file, 'w') do |out_file|
16
+ out_file.write(Pdfs2Pdf.configuration.pdfmarks_meta)
17
+ current_page = 1
18
+ pdf_files.each do |pdf_file|
19
+ filename = if base_dir
20
+ # remove the base_directory from the full path
21
+ pdf_file.gsub(base_dir, File.basename(pdf_file))
22
+ else
23
+ pdf_file
24
+ end
25
+ out_file.write "[ /Page #{current_page} /Title (#{filename}) /OUT pdfmark\n"
26
+ current_page += page_count(pdf_file)
27
+ end
28
+ end
29
+ end
30
+
31
+ # Merge/combine list of pdf files using Ghostscript's `gs` command
32
+ #
33
+ # @param [Array<String>] list input file list
34
+ # @param [String] pdfmarks the pdfmarks file default to 'pdfmarks'
35
+ # @param [String] output_file the output pdf file
36
+ def merge_pdfs(list, pdfmarks = 'pdfmarks', output_file = 'output.pdf')
37
+ paper_size = Pdfs2Pdf.configuration.default_options[:paper_size]
38
+ _stdin, _stderr, status = Open3.capture3(
39
+ 'gs',
40
+ '-q',
41
+ '-dNOPAUSE',
42
+ '-dBATCH',
43
+ '-sDEVICE=pdfwrite',
44
+ "-sPAPERSIZE=#{paper_size}",
45
+ "-sOutputFile=#{output_file}",
46
+ *list,
47
+ pdfmarks)
48
+ fail 'Problem in merge_pdfs' unless status.success?
49
+ end
50
+
51
+ # Extract pdf page count using pdf-reader
52
+ #
53
+ # @return [Fixnum] the page count of the given pdf file
54
+ def page_count(pdf_file)
55
+ File.open(pdf_file, 'rb') do |io|
56
+ reader = PDF::Reader.new(io)
57
+ return reader.page_count
58
+ end
59
+ fail "Problem getting the page count for #{pdf_file}"
60
+ end
61
+ end
62
+ end
@@ -1,4 +1,4 @@
1
1
  # coding: utf-8
2
2
  module Pdfs2Pdf
3
- VERSION = '0.0.6'
3
+ VERSION = '0.0.7'
4
4
  end
data/lib/pdfs2pdf.rb CHANGED
@@ -3,7 +3,7 @@ require 'agile_utils'
3
3
  require 'code_lister'
4
4
  require_relative 'pdfs2pdf/version'
5
5
  require_relative 'pdfs2pdf/cli'
6
- require_relative 'pdfs2pdf/utils'
6
+ require_relative 'pdfs2pdf/pdfs2pdf'
7
7
  include AgileUtils::Options
8
8
  include CodeLister
9
9
  include Pdfs2Pdf
data/pdfs2pdf.gemspec CHANGED
@@ -8,17 +8,25 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Pdfs2Pdf::VERSION
9
9
  spec.authors = ['Burin Choomnuan']
10
10
  spec.email = ['agilecreativity@gmail.com']
11
- spec.summary = %q{Combine multiple pdfs into one pdf with proper bookmarks for easy navigation}
12
- spec.description = %q{Combine multiple pdfs into a single file with bookmarks for easy navigation}
11
+ spec.summary = %q(Combine multiple pdfs into one pdf with proper bookmarks for easy navigation)
12
+ spec.description = %q(Combine multiple pdfs into a single file with bookmarks for easy navigation)
13
13
  spec.homepage = 'https://github.com/agilecreativity/pdfs2pdf'
14
14
  spec.license = 'MIT'
15
- spec.files = `git ls-files`.split($/)
15
+ spec.files = Dir.glob('{bin,lib,config}/**/*') + %w(Gemfile
16
+ Rakefile
17
+ pdfs2pdf.gemspec
18
+ README.md
19
+ CHANGELOGS.md
20
+ LICENSE
21
+ .rubocop.yml
22
+ .gitignore
23
+ rubocop-todo.yml)
16
24
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
25
+ spec.test_files = Dir.glob('{test}/**/*')
26
+ spec.require_paths = ['lib']
19
27
  spec.add_runtime_dependency 'thor'
20
28
  spec.add_runtime_dependency 'agile_utils', '~> 0.0.9'
21
- spec.add_runtime_dependency 'code_lister', '~> 0.0.8'
29
+ spec.add_runtime_dependency 'code_lister', '~> 0.0.9'
22
30
  spec.add_runtime_dependency 'pdf-reader', '~> 1.3.3'
23
31
  spec.add_development_dependency 'bundler', '~> 1.5'
24
32
  spec.add_development_dependency 'gem-ctags', '~> 1.0'
data/rubocop-todo.yml CHANGED
@@ -1,84 +1,31 @@
1
1
  # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2014-04-23 20:34:48 +1000 using RuboCop version 0.20.1.
2
+ # on 2014-05-11 23:16:45 +1000 using RuboCop version 0.21.0.
3
3
  # The point is for the user to remove these configuration records
4
4
  # one by one as the offenses are removed from the code base.
5
5
  # Note that changes in the inspected code, or installation of new
6
6
  # versions of RuboCop, may require this file to be generated again.
7
7
 
8
- # Offense count: 9
8
+ # Offense count: 3
9
9
  AmbiguousOperator:
10
10
  Enabled: false
11
11
 
12
- # Offense count: 1
13
- # Cop supports --auto-correct.
14
- # Configuration parameters: PreferredMethods.
15
- CollectionMethods:
16
- Enabled: false
17
-
18
- # Offense count: 1
19
- CyclomaticComplexity:
20
- Max: 7
21
-
22
- # Offense count: 5
12
+ # Offense count: 7
23
13
  Documentation:
24
14
  Enabled: false
25
15
 
26
- # Offense count: 1
27
- # Cop supports --auto-correct.
28
- EmptyLinesAroundBody:
29
- Enabled: true
30
-
31
- # Offense count: 1
32
- # Cop supports --auto-correct.
33
- # Configuration parameters: EnforcedStyle, SupportedStyles.
34
- HashSyntax:
35
- Enabled: true
36
-
37
- # Offense count: 4
38
- # Cop supports --auto-correct.
39
- LeadingCommentSpace:
40
- Enabled: true
41
-
42
- # Offense count: 18
16
+ # Offense count: 7
43
17
  LineLength:
44
- Max: 108
18
+ Max: 123
45
19
 
46
- # Offense count: 8
20
+ # Offense count: 3
47
21
  # Configuration parameters: CountComments.
48
22
  MethodLength:
49
- Max: 30
23
+ Max: 15
50
24
 
51
25
  # Offense count: 1
52
- # Cop supports --auto-correct.
53
- SpaceAfterComma:
54
- Enabled: true
26
+ RegexpLiteral:
27
+ MaxSlashes: 0
55
28
 
56
29
  # Offense count: 1
57
- # Cop supports --auto-correct.
58
- # Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
59
- SpaceInsideBlockBraces:
60
- Enabled: true
61
-
62
- # Offense count: 1
63
- # Cop supports --auto-correct.
64
- SpecialGlobalVars:
65
- Enabled: true
66
-
67
- # Offense count: 16
68
- # Cop supports --auto-correct.
69
- # Configuration parameters: EnforcedStyle, SupportedStyles.
70
- StringLiterals:
71
- Enabled: false
72
-
73
- # Offense count: 1
74
- UnreachableCode:
75
- Enabled: true
76
-
77
- # Offense count: 1
78
- UselessAssignment:
30
+ UnusedBlockArgument:
79
31
  Enabled: false
80
-
81
- # Offense count: 1
82
- # Cop supports --auto-correct.
83
- WordArray:
84
- MinSize: 2
@@ -1,9 +1,9 @@
1
1
  require_relative '../../test_helper'
2
- describe Pdfs2Pdf::Utils do
2
+ describe Pdfs2Pdf do
3
3
  context '#page_count' do
4
4
  it 'returns result for valid command' do
5
5
  input_file = 'test/fixtures/samples/demo1_xxx.rb.xhtml.pdf'
6
- result = Pdfs2Pdf::Utils.page_count(input_file)
6
+ result = Pdfs2Pdf.page_count(input_file)
7
7
  result.must_equal 1
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdfs2pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Burin Choomnuan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-06 00:00:00.000000000 Z
11
+ date: 2014-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.0.8
47
+ version: 0.0.9
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.0.8
54
+ version: 0.0.9
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pdf-reader
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -201,28 +201,19 @@ extensions: []
201
201
  extra_rdoc_files: []
202
202
  files:
203
203
  - ".gitignore"
204
- - ".rspec"
205
204
  - ".rubocop.yml"
206
- - ".ruby-version"
207
205
  - CHANGELOGS.md
208
206
  - Gemfile
209
- - Guardfile
210
- - LICENSE.txt
207
+ - LICENSE
211
208
  - README.md
212
209
  - Rakefile
213
210
  - bin/pdfs2pdf
214
211
  - config/initializers/pdfs2pdf.rb
215
- - demo1.png
216
- - demo2.png
217
- - demo3.png
218
- - demo4.png
219
- - final_output.png
220
212
  - lib/pdfs2pdf.rb
221
213
  - lib/pdfs2pdf/cli.rb
222
214
  - lib/pdfs2pdf/configuration.rb
223
- - lib/pdfs2pdf/utils.rb
215
+ - lib/pdfs2pdf/pdfs2pdf.rb
224
216
  - lib/pdfs2pdf/version.rb
225
- - pdfmarks
226
217
  - pdfs2pdf.gemspec
227
218
  - rubocop-todo.yml
228
219
  - test/fixtures/samples/demo1_xxx.rb.xhtml.pdf
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format progress
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.1.1
data/Guardfile DELETED
@@ -1,13 +0,0 @@
1
- # A sample Guardfile
2
- # More info at https://github.com/guard/guard#readme
3
- guard 'minitest' do
4
- # with Minitest::Unit
5
- watch(%r|^test/(.*)\/?test_(.*)\.rb|)
6
- watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
7
- watch(%r|^test/test_helper\.rb|) { "test" }
8
-
9
- # with Minitest::Spec
10
- # watch(%r|^spec/(.*)_spec\.rb|)
11
- # watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
12
- # watch(%r|^spec/spec_helper\.rb|) { "spec" }
13
- end
data/demo1.png DELETED
Binary file
data/demo2.png DELETED
Binary file
data/demo3.png DELETED
Binary file
data/demo4.png DELETED
Binary file
data/final_output.png DELETED
Binary file
@@ -1,64 +0,0 @@
1
- # coding: utf-8
2
- require 'open3'
3
- require 'fileutils'
4
- require 'pdf-reader'
5
- require_relative '../pdfs2pdf'
6
- require_relative './configuration'
7
- module Pdfs2Pdf
8
- class Utils
9
- class << self
10
- # Create the 'pdfmarks' file for use with 'gs' utility
11
- #
12
- # @param [Array<String>] pdf_files the input file list (pdf)
13
- # @param [String] output_file the output filename default to 'pdfmarks'
14
- # @param [String] base_dir the base directory (TODO: review this code!)
15
- def create_pdfmarks(pdf_files, pdfmarks_file = 'pdfmarks', base_dir = Dir.pwd)
16
- File.open(pdfmarks_file, 'w') do |out_file|
17
- out_file.write(Pdfs2Pdf.configuration.pdfmarks_meta)
18
- current_page = 1
19
- pdf_files.each do |pdf_file|
20
- filename = if base_dir
21
- # remove the base_directory from the full path
22
- pdf_file.gsub(base_dir, File.basename(pdf_file))
23
- else
24
- pdf_file
25
- end
26
- out_file.write "[ /Page #{current_page} /Title (#{filename}) /OUT pdfmark\n"
27
- current_page += page_count(pdf_file)
28
- end
29
- end
30
- end
31
-
32
- # Merge/combine list of pdf files using Ghostscript's `gs` command
33
- #
34
- # @param [Array<String>] list input file list
35
- # @param [String] pdfmarks the pdfmarks file default to 'pdfmarks'
36
- # @param [String] output_file the output pdf file
37
- def merge_pdfs(list, pdfmarks = 'pdfmarks', output_file = 'output.pdf')
38
- paper_size = Pdfs2Pdf.configuration.default_options[:paper_size]
39
- _stdin, _stderr, status = Open3.capture3(
40
- 'gs',
41
- '-q',
42
- '-dNOPAUSE',
43
- '-dBATCH',
44
- '-sDEVICE=pdfwrite',
45
- "-sPAPERSIZE=#{paper_size}",
46
- "-sOutputFile=#{output_file}",
47
- *list,
48
- pdfmarks)
49
- fail 'Problem in merge_pdfs' unless status.success?
50
- end
51
-
52
- # Extract pdf page count using pdf-reader
53
- #
54
- # @return [Fixnum] the page count of the given pdf file
55
- def page_count(pdf_file)
56
- File.open(pdf_file, 'rb') do |io|
57
- reader = PDF::Reader.new(io)
58
- return reader.page_count
59
- end
60
- fail "Problem getting the page count for #{pdf_file}"
61
- end
62
- end
63
- end
64
- end
data/pdfmarks DELETED
@@ -1,8 +0,0 @@
1
- [ /Title (My Combined Pdf)
2
- /Author (Burin Choomnuan)
3
- /Keywords (fun, witty, interesting)
4
- /DOCINFO pdfmark
5
- [ /Page 1 /Title (demo1_xxx.rb.xhtml.pdf/demo1_xxx.rb.xhtml.pdf) /OUT pdfmark
6
- [ /Page 2 /Title (demo2_xxx.rb.xhtml.pdf/demo2_xxx.rb.xhtml.pdf) /OUT pdfmark
7
- [ /Page 3 /Title (demo3_xxx.rb.xhtml.pdf/sub_dir/demo3_xxx.rb.xhtml.pdf) /OUT pdfmark
8
- [ /Page 4 /Title (demo4_xxx.rb.xhtml.pdf/sub_dir/demo4_xxx.rb.xhtml.pdf) /OUT pdfmark