pdf_thumbnailer 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -1
- data/lib/pdf_thumbnailer/pdf_thumbs.rb +27 -15
- data/lib/pdf_thumbnailer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47f518a6745d7a05c55d8ff96461bfb2ad35eee0
|
4
|
+
data.tar.gz: feb3e239262d77df2cbcdddcf9546255bbca77ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b35b036a58ff5d89d6b76f281193c1007f7664873e9854219ab2e026e3b028196296f9d791754d85892a21ca1fd8cd681712545bce21dda9cdaadf0a04aee533
|
7
|
+
data.tar.gz: d42b8bcbd3a15a3dc7a0b6391e6c23d60cc60e4755d30ced62de72ff534a60e488346c9060b438d00620c6884268772fca72736ece7f726c8932c51301343121
|
data/README.md
CHANGED
@@ -27,7 +27,7 @@ First, configure `PdfThumbs`:
|
|
27
27
|
|
28
28
|
```ruby
|
29
29
|
PdfThumbs.configure(
|
30
|
-
pdf_dir: '/some/path/with/pdf/files',
|
30
|
+
pdf_dir: '/some/path/with/pdf/files',
|
31
31
|
img_dir: '/where/to/save/page/images', # required
|
32
32
|
thumb_sizes: [1000, 500, 100] # max pixel lengths for the long side (height or width) of the page images
|
33
33
|
)
|
@@ -43,6 +43,16 @@ end
|
|
43
43
|
|
44
44
|
`thumbnail!` optionally accepts a code block with one argument. This argument (`thumb_dir` in the above example) will be a string representing the path of the newly created directory containing page images for a particular pdf. The folder structure `img_dir` will be identical to that of `pdf_dir` but for every `.pdf` file there will instead be a directory of the same name containing `.png` iamges.
|
45
45
|
|
46
|
+
Alternatively a single pdf file can have its pages converted to images using the `thumbnail_single!` method:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
PdfThumbs.configure img_dir: '/where/to/save/page/images', thumb_sizes: 500
|
50
|
+
|
51
|
+
thumb_dir = PdfThumbs.thumbnail_single! '/pdf/root/dir', 'relative/path/to/My File.pdf'
|
52
|
+
|
53
|
+
puts "Page thumbnails are located in: #{thumb_dir}"
|
54
|
+
```
|
55
|
+
|
46
56
|
|
47
57
|
License
|
48
58
|
-----------------------------
|
@@ -1,34 +1,31 @@
|
|
1
1
|
class PdfThumbs
|
2
2
|
def self.configure **opts
|
3
|
-
[:pdf_dir, :img_dir, :thumb_sizes].each do |required_opt|
|
3
|
+
# [:pdf_dir, :img_dir, :thumb_sizes].each do |required_opt|
|
4
|
+
[:img_dir, :thumb_sizes].each do |required_opt|
|
4
5
|
raise ArgumentError, "Missing required config option: :#{required_opt}" unless opts[required_opt]
|
5
6
|
end
|
6
|
-
@@pdf_dir = File.join(opts[:pdf_dir], '') # adds trailing '/' if it doesn't already have one
|
7
7
|
@@img_dir = File.join(opts[:img_dir], '') # adds trailing '/' if it doesn't already have one
|
8
|
+
@@pdf_dir = File.join(opts[:pdf_dir], '') if opts[:pdf_dir]# adds trailing '/' if it doesn't already have one
|
8
9
|
@@thumb_sizes = opts[:thumb_sizes].is_a?(Fixnum) ? [opts[:thumb_sizes]] : opts[:thumb_sizes]
|
9
10
|
end
|
10
11
|
|
11
12
|
def self.thumbnail!
|
12
13
|
Dir.glob(File.join(@@pdf_dir, '**', '*.pdf')) do |pdf|
|
13
|
-
img_dir =
|
14
|
-
|
15
|
-
@@thumb_sizes.each do |thumb_size|
|
16
|
-
`pdftoppm -png -scale-to #{thumb_size} "#{pdf}" "#{img_dir}"`
|
17
|
-
|
18
|
-
Dir.glob(File.join(img_dir, '-*.png')) do |img_path|
|
19
|
-
page_num = File.basename(img_path, '.png').split('-')[-1].to_i
|
20
|
-
File.rename(img_path, File.join(img_dir, "#{thumb_size}_#{page_num}.png"))
|
21
|
-
end
|
22
|
-
end
|
14
|
+
img_dir = thumbnail_pdf @@pdf_dir, pdf.gsub(@@pdf_dir, '')
|
23
15
|
yield(img_dir) if block_given?
|
24
16
|
end
|
25
17
|
end
|
26
18
|
|
19
|
+
# TODO: add spec and document in README.md
|
20
|
+
def self.thumbnail_single! pdf_dir, relative_pdf_path
|
21
|
+
thumbnail_pdf pdf_dir, relative_pdf_path
|
22
|
+
end
|
23
|
+
|
27
24
|
private
|
28
25
|
|
29
|
-
def self.clear_img_dir
|
30
|
-
relative_path = File.dirname
|
31
|
-
relative_img_path = relative_path == '.' ? File.basename(
|
26
|
+
def self.clear_img_dir relative_pdf_path
|
27
|
+
relative_path = File.dirname relative_pdf_path
|
28
|
+
relative_img_path = relative_path == '.' ? File.basename(relative_pdf_path) : File.join(relative_path, File.basename(relative_pdf_path))
|
32
29
|
img_dir = File.join(@@img_dir, relative_img_path, '')
|
33
30
|
|
34
31
|
FileUtils.rm_rf(img_dir) if File.directory?(img_dir)
|
@@ -36,4 +33,19 @@ class PdfThumbs
|
|
36
33
|
|
37
34
|
img_dir
|
38
35
|
end
|
36
|
+
|
37
|
+
def self.thumbnail_pdf pdf_dir, relative_pdf_path
|
38
|
+
img_dir = clear_img_dir relative_pdf_path
|
39
|
+
|
40
|
+
@@thumb_sizes.each do |thumb_size|
|
41
|
+
`pdftoppm -png -scale-to #{thumb_size} "#{File.join(pdf_dir, relative_pdf_path)}" "#{img_dir}"`
|
42
|
+
|
43
|
+
Dir.glob(File.join(img_dir, '-*.png')) do |img_path|
|
44
|
+
page_num = File.basename(img_path, '.png').split('-')[-1].to_i
|
45
|
+
File.rename(img_path, File.join(img_dir, "#{thumb_size}_#{page_num}.png"))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
img_dir
|
50
|
+
end
|
39
51
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdf_thumbnailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Huber
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|