pdfs2pdf 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +6 -4
- data/lib/pdfs2pdf/cli.rb +17 -10
- data/lib/pdfs2pdf/pdfs2pdf.rb +4 -3
- data/lib/pdfs2pdf/version.rb +1 -1
- data/pdfs2pdf.gemspec +2 -2
- data/test/lib/pdfs2pdf/test_pdfs2pdf.rb +1 -1
- metadata +10 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ceb2f9f7a6a8fc41d1d6f3b246adf6764506e74
|
4
|
+
data.tar.gz: 28a4f610e387bc2b698a002d45742635b1d7a751
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab425500b6d2f1f2310b790a659ff39eb21e20ef8f5c4fce6629dac16d35c428a343e72d076de612f717e04071ea2345e13f887d8ef4d9092fa81e640ded0259
|
7
|
+
data.tar.gz: 2111ce959961cf4e0f947171bef478bdebac15432c40c0e0644503c093acdf5fcf967aea898f6e5e4b4964d70c84fb3c831667f00a88dae415502d07fd3bfde5
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
[![Dependency Status](https://gemnasium.com/agilecreativity/pdfs2pdf.png)](https://gemnasium.com/agilecreativity/pdfs2pdf)
|
5
5
|
[![Code Climate](https://codeclimate.com/github/agilecreativity/pdfs2pdf.png)](https://codeclimate.com/github/agilecreativity/pdfs2pdf)
|
6
6
|
|
7
|
-
Combine multiple PDF files into a single pdf file with
|
7
|
+
Combine multiple PDF files into a single pdf file with combine table of centent using [Ghostscript][].
|
8
8
|
|
9
9
|
### What it does?
|
10
10
|
|
@@ -39,7 +39,6 @@ When you run the following command:
|
|
39
39
|
|
40
40
|
```
|
41
41
|
gem install pdfs2pdf
|
42
|
-
# Note: must change to the root of the directory that we want to start from
|
43
42
|
cd ./test/fixtures/samples
|
44
43
|
pdfs2pdf --recursive
|
45
44
|
```
|
@@ -75,8 +74,11 @@ Usage:
|
|
75
74
|
pdfs2pdf
|
76
75
|
|
77
76
|
Options:
|
78
|
-
-
|
79
|
-
|
77
|
+
-b, [--base-dir=BASE_DIR] # Base directory
|
78
|
+
# Default: . (current directory)
|
79
|
+
-r, [--recursive], [--no-recursive] # Search for files recursively
|
80
|
+
# Default: true
|
81
|
+
-v, [--version], [--no-version] # Display version information
|
80
82
|
|
81
83
|
Combine multiple pdfs into one file with bookmarks
|
82
84
|
```
|
data/lib/pdfs2pdf/cli.rb
CHANGED
@@ -8,21 +8,20 @@ module Pdfs2Pdf
|
|
8
8
|
include AgileUtils::Options
|
9
9
|
include CodeLister
|
10
10
|
class CLI < Thor
|
11
|
-
desc "merge", "Combine multiple pdfs into one file with
|
12
|
-
|
11
|
+
desc "merge", "Combine multiple pdfs into one file with combined table of content"
|
12
|
+
method_option *AgileUtils::Options::BASE_DIR
|
13
13
|
method_option *AgileUtils::Options::RECURSIVE
|
14
14
|
method_option *AgileUtils::Options::VERSION
|
15
|
-
|
16
15
|
def merge
|
17
16
|
opts = options.symbolize_keys
|
18
17
|
if opts[:version]
|
19
18
|
puts "You are using Pdfs2Pdf version #{Pdfs2Pdf::VERSION}"
|
20
19
|
exit
|
21
20
|
end
|
22
|
-
base_dir
|
21
|
+
base_dir = File.expand_path(opts[:base_dir])
|
23
22
|
pdf_files = CodeLister.files base_dir: base_dir,
|
24
23
|
exts: %w[pdf],
|
25
|
-
recursive:
|
24
|
+
recursive: opts[:recursive]
|
26
25
|
create_pdfmarks(pdf_files, base_dir)
|
27
26
|
merge_pdfs(pdf_files)
|
28
27
|
end
|
@@ -31,11 +30,18 @@ module Pdfs2Pdf
|
|
31
30
|
def usage
|
32
31
|
puts <<-EOT
|
33
32
|
Usage:
|
33
|
+
|
34
34
|
pdfs2pdf
|
35
|
+
|
35
36
|
Options:
|
36
|
-
-
|
37
|
-
|
38
|
-
|
37
|
+
-b, [--base-dir=BASE_DIR] # Base directory
|
38
|
+
# Default: . (current directory)
|
39
|
+
-r, [--recursive], [--no-recursive] # Search for files recursively
|
40
|
+
# Default: --recursive
|
41
|
+
-v, [--version], [--no-version] # Display version information
|
42
|
+
|
43
|
+
Combine multiple pdfs into one file with combined table of content
|
44
|
+
|
39
45
|
EOT
|
40
46
|
end
|
41
47
|
|
@@ -51,11 +57,12 @@ Combine multiple pdfs into one file with bookmarks
|
|
51
57
|
end
|
52
58
|
|
53
59
|
def merge_pdfs(pdf_files)
|
60
|
+
output_filename = "pdfs2pdf_output.pdf"
|
54
61
|
elapsed = AgileUtils::FileUtil.time do
|
55
|
-
Pdfs2Pdf.merge_pdfs(pdf_files, "pdfmarks",
|
62
|
+
Pdfs2Pdf.merge_pdfs(pdf_files, "pdfmarks", output_filename)
|
56
63
|
end
|
57
64
|
puts "Combine pdf files took #{elapsed} ms"
|
58
|
-
puts "Your combined pdf is available at #{File.absolute_path(
|
65
|
+
puts "Your combined pdf is available at #{File.absolute_path(output_filename)}"
|
59
66
|
end
|
60
67
|
end
|
61
68
|
end
|
data/lib/pdfs2pdf/pdfs2pdf.rb
CHANGED
@@ -12,12 +12,13 @@ module Pdfs2Pdf
|
|
12
12
|
# @param [String] base_dir the base directory
|
13
13
|
# def create_pdfmarks(pdf_files, pdfmarks_file = "pdfmarks", base_dir = Dir.pwd)
|
14
14
|
def create_pdfmarks(pdf_files, pdfmarks_file = "pdfmarks", base_dir)
|
15
|
+
FileUtils.chdir(base_dir)
|
15
16
|
File.open(pdfmarks_file, "w") do |out_file|
|
16
17
|
out_file.write(Pdfs2Pdf.configuration.pdfmarks_meta)
|
17
18
|
current_page = 1
|
18
19
|
pdf_files.each do |pdf_file|
|
19
20
|
out_file.write "[ /Page #{current_page} /Title (#{pdf_file}) /OUT pdfmark\n"
|
20
|
-
current_page += page_count(
|
21
|
+
current_page += page_count(pdf_file)
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
@@ -46,8 +47,8 @@ module Pdfs2Pdf
|
|
46
47
|
# Extract pdf page count using pdf-reader
|
47
48
|
#
|
48
49
|
# @return [Fixnum] the page count of the given pdf file
|
49
|
-
def page_count(
|
50
|
-
pdf_file = File.expand_path(
|
50
|
+
def page_count(pdf_file)
|
51
|
+
pdf_file = File.expand_path(pdf_file)
|
51
52
|
File.open(pdf_file, "rb") do |io|
|
52
53
|
reader = PDF::Reader.new(io)
|
53
54
|
return reader.page_count
|
data/lib/pdfs2pdf/version.rb
CHANGED
data/pdfs2pdf.gemspec
CHANGED
@@ -8,8 +8,8 @@ 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
|
12
|
-
spec.description = %q(Combine multiple
|
11
|
+
spec.summary = %q(Combine multiple pdf files into a single pdf with combined table of content for quick navigation)
|
12
|
+
spec.description = %q(Combine multiple pdf files into a single file with combined table of content for quick navigation)
|
13
13
|
spec.homepage = "https://github.com/agilecreativity/pdfs2pdf"
|
14
14
|
spec.license = "MIT"
|
15
15
|
spec.files = Dir.glob("{bin,lib,config}/**/*") + %w[Gemfile
|
@@ -3,7 +3,7 @@ describe Pdfs2Pdf do
|
|
3
3
|
context "#page_count" do
|
4
4
|
it "returns result for valid command" do
|
5
5
|
input_file = "demo1_xxx.rb.xhtml.pdf"
|
6
|
-
result = Pdfs2Pdf.page_count("./test/fixtures/samples"
|
6
|
+
result = Pdfs2Pdf.page_count("./test/fixtures/samples/#{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.1.
|
4
|
+
version: 0.1.2
|
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-
|
11
|
+
date: 2014-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -206,7 +206,8 @@ dependencies:
|
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0.8'
|
209
|
-
description: Combine multiple
|
209
|
+
description: Combine multiple pdf files into a single file with combined table of
|
210
|
+
content for quick navigation
|
210
211
|
email:
|
211
212
|
- agilecreativity@gmail.com
|
212
213
|
executables:
|
@@ -258,12 +259,13 @@ rubyforge_project:
|
|
258
259
|
rubygems_version: 2.2.2
|
259
260
|
signing_key:
|
260
261
|
specification_version: 4
|
261
|
-
summary: Combine multiple
|
262
|
+
summary: Combine multiple pdf files into a single pdf with combined table of content
|
263
|
+
for quick navigation
|
262
264
|
test_files:
|
263
|
-
- test/fixtures/samples/demo1_xxx.rb.xhtml.pdf
|
264
|
-
- test/fixtures/samples/demo2_xxx.rb.xhtml.pdf
|
265
|
-
- test/fixtures/samples/sub_dir/demo3_xxx.rb.xhtml.pdf
|
266
|
-
- test/fixtures/samples/sub_dir/demo4_xxx.rb.xhtml.pdf
|
267
265
|
- test/lib/pdfs2pdf/test_pdfs2pdf.rb
|
268
266
|
- test/test_helper.rb
|
267
|
+
- test/fixtures/samples/demo2_xxx.rb.xhtml.pdf
|
268
|
+
- test/fixtures/samples/sub_dir/demo4_xxx.rb.xhtml.pdf
|
269
|
+
- test/fixtures/samples/sub_dir/demo3_xxx.rb.xhtml.pdf
|
270
|
+
- test/fixtures/samples/demo1_xxx.rb.xhtml.pdf
|
269
271
|
has_rdoc:
|