pdf-burst 0.1.0 → 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/CHANGELOG.md +10 -0
- data/README.md +46 -0
- data/lib/pdf/burst.rb +16 -6
- data/lib/pdf/burst/version.rb +1 -1
- metadata +9 -7
data/CHANGELOG.md
ADDED
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# PDF::Burst
|
2
|
+
|
3
|
+
## What?
|
4
|
+
|
5
|
+
PDF::Burst is a gem that lets you split a PDF document with several pages into single page files.
|
6
|
+
|
7
|
+
|
8
|
+
## Why?
|
9
|
+
|
10
|
+
We needed this functionality for the development of [Lehtilompakko](http://lehtilompakko.fi/), and did not want any Java app to do the job.
|
11
|
+
|
12
|
+
|
13
|
+
## How?
|
14
|
+
|
15
|
+
Simple! Once you install the 'pdf-burst' gem, all you need is:
|
16
|
+
|
17
|
+
require 'pdf-burst'
|
18
|
+
PDF::Burst.new("/path/to/my/document.pdf").run!
|
19
|
+
|
20
|
+
By default, the PDF files will be output to your current working directory. But that's not what you want, is it?
|
21
|
+
|
22
|
+
PDF::Burst.new("document.pdf", :output => "/tmp").run!
|
23
|
+
|
24
|
+
Better, huh?
|
25
|
+
|
26
|
+
Another default is the page name. They'll all be nicely named like "page_1.pdf", "page_2.pdf". We let you change that too:
|
27
|
+
|
28
|
+
PDF::Burst.new("document.pdf", :filename => "doc.%04d").run!
|
29
|
+
|
30
|
+
Would output them like this: "doc.0001.pdf", "doc.0002.pdf", etc.
|
31
|
+
|
32
|
+
If you want thumbnails to be generated for each page, just use the thumbnail option with the thumbnail size.
|
33
|
+
|
34
|
+
PDF::Burst.new("document.pdf", :thumbnail => "128x128").run!
|
35
|
+
|
36
|
+
This requires ImageMagick to be installed, as it uses the 'convert' command.
|
37
|
+
|
38
|
+
|
39
|
+
## Special thanks
|
40
|
+
|
41
|
+
Thanks to [Hopeinen Norsu](http://hopeinennorsu.fi/) for letting us release this as open-source.
|
42
|
+
|
43
|
+
|
44
|
+
## License
|
45
|
+
|
46
|
+
Check the LICENSE file. It's the MIT license.
|
data/lib/pdf/burst.rb
CHANGED
@@ -2,14 +2,16 @@ module PDF
|
|
2
2
|
class Burst
|
3
3
|
def initialize(pdf_path, options={})
|
4
4
|
@pdf_path = pdf_path
|
5
|
-
@output_path = options[:
|
6
|
-
@page_name = options[:
|
5
|
+
@output_path = options[:output] || "."
|
6
|
+
@page_name = options[:filename] || "page_%d"
|
7
|
+
@thumbnail_size = options[:thumbnail]
|
7
8
|
end
|
8
9
|
|
9
10
|
def run!
|
10
11
|
page_count.times do |i|
|
11
12
|
page_number = i + 1
|
12
13
|
system burst_command(page_number)
|
14
|
+
system thumbnail_command(page_number) if generate_thumbnail?
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
@@ -17,6 +19,10 @@ module PDF
|
|
17
19
|
`#{page_count_command}`.to_i
|
18
20
|
end
|
19
21
|
|
22
|
+
def generate_thumbnail?
|
23
|
+
!!@thumbnail_size
|
24
|
+
end
|
25
|
+
|
20
26
|
private
|
21
27
|
|
22
28
|
def page_count_command
|
@@ -27,12 +33,16 @@ module PDF
|
|
27
33
|
"gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dFirstPage=#{page_number} -dAutoFilterColorImages=false -dAutoFilterGrayImage=false -dColorImageFilter=/FlateEncode -dLastPage=#{page_number} -sOutputFile='#{output_file_path(page_number)}' '#{@pdf_path}'"
|
28
34
|
end
|
29
35
|
|
30
|
-
def
|
31
|
-
@
|
36
|
+
def thumbnail_command(page_number)
|
37
|
+
"convert -resize #{@thumbnail_size} #{output_file_path(page_number)} #{output_file_path(page_number, 'png')}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def page_filename(page_number, extension="pdf")
|
41
|
+
@page_name % page_number + ".#{extension}"
|
32
42
|
end
|
33
43
|
|
34
|
-
def output_file_path(page_number)
|
35
|
-
File.expand_path("#{@output_path}/#{page_filename(page_number)}")
|
44
|
+
def output_file_path(page_number, extension="pdf")
|
45
|
+
File.expand_path("#{@output_path}/#{page_filename(page_number, extension)}")
|
36
46
|
end
|
37
47
|
end
|
38
48
|
end
|
data/lib/pdf/burst/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdf-burst
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Joao Carlos
|
@@ -15,11 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-06-
|
18
|
+
date: 2010-06-30 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
22
|
-
description: "Creates a PDF for each page from a PDF with multiple pages. Uses Ghostscript for the actual bursting. You'll need the following commands available on your system: gs (Ghostscript), pdfinfo (Poppler) and
|
22
|
+
description: "Creates a PDF for each page from a PDF with multiple pages. Uses Ghostscript for the actual bursting. You'll need the following commands available on your system: gs (Ghostscript), pdfinfo (Poppler), grep and convert (ImageMagick) if you want thumbnails."
|
23
23
|
email:
|
24
24
|
- mail@joao-carlos.com
|
25
25
|
executables:
|
@@ -29,11 +29,13 @@ extensions: []
|
|
29
29
|
extra_rdoc_files: []
|
30
30
|
|
31
31
|
files:
|
32
|
-
- lib/pdf/burst/version.rb
|
33
|
-
- lib/pdf/burst.rb
|
34
32
|
- lib/pdf-burst.rb
|
33
|
+
- lib/pdf/burst.rb
|
34
|
+
- lib/pdf/burst/version.rb
|
35
35
|
- bin/pdf-burst
|
36
36
|
- LICENSE
|
37
|
+
- CHANGELOG.md
|
38
|
+
- README.md
|
37
39
|
has_rdoc: true
|
38
40
|
homepage: http://github.com/kiskolabs/pdf-burst
|
39
41
|
licenses: []
|