combine_pdf 0.2.1 → 0.2.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 +10 -2
- data/lib/combine_pdf/pdf_public.rb +57 -38
- data/lib/combine_pdf/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: 5d032a7ab4e8768046189f88860518e5de8f977f
|
4
|
+
data.tar.gz: 65c57d46be5f5cb0ec5a0fcbfbcfef207c3336cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d9482bb42b38330f701644bdf41461ddf625a55625c7e1073b1e76fd09d9bada40c643c573b6a9c60fd4a6c6b6365642863b0e524100916755918973133820f
|
7
|
+
data.tar.gz: 79f5bc78ccbf0cafcb11a5c38a9bf16ac23d1123d0cfc307397dd42baeb23facc82f015556614f7195cfaf43072d2961fc148e03901661099bb446a8c0a8fb39
|
data/CHANGELOG.md
CHANGED
@@ -2,15 +2,23 @@
|
|
2
2
|
|
3
3
|
***
|
4
4
|
|
5
|
+
Change log v.0.2.2
|
6
|
+
|
7
|
+
**fix**: fixed the default value for the :location attribute of PDF#stamp_pages(String, options). Now, instead of the default stamp being written at [:top, :bottom], it's default location will be set to [:center].
|
8
|
+
|
9
|
+
**fix**: fixed the 'center' location in the page numbering, so that it wouldn't enforce a small font on an all page centered number.
|
10
|
+
|
11
|
+
***
|
12
|
+
|
5
13
|
Change log v.0.2.1
|
6
14
|
|
7
15
|
**fix**: better page stamping... or, at least more secure (we hope).
|
8
16
|
|
9
|
-
**feature**: added the PDF#
|
17
|
+
**feature**: added the PDF#stamp_pages shortcut method. Credit to Tania (@taniarv) for the concept.
|
10
18
|
|
11
19
|
**fix**: possible string encoding issues could have arose when strings were rendered to PDF format. Credit to Tania (@taniarv) for exposing the issue.
|
12
20
|
|
13
|
-
**feature**: Metadata is now
|
21
|
+
**feature**: Metadata is now easier to set by allowing fast access to the Information header when using PDF#save and PDF#to_pdf. Credit to Tania (@taniarv) for code.
|
14
22
|
|
15
23
|
***
|
16
24
|
|
@@ -350,56 +350,72 @@ module CombinePDF
|
|
350
350
|
opt = {
|
351
351
|
number_format: ' - %s - ',
|
352
352
|
start_at: 1,
|
353
|
-
font_size: 12,
|
354
353
|
font: :Helvetica,
|
355
354
|
margin_from_height: 45,
|
356
355
|
margin_from_side: 15
|
357
356
|
}
|
358
357
|
opt.update options
|
359
|
-
opt[:
|
358
|
+
opt[:location] ||= opt[:number_location] ||= opt[:stamp_location] ||= [:top, :bottom]
|
359
|
+
opt[:location] = [opt[:location]] unless opt[:location].is_a? (Array)
|
360
|
+
|
360
361
|
page_number = opt[:start_at]
|
361
362
|
format_repeater = opt[:number_format].count('%')
|
363
|
+
just_center = [:center]
|
364
|
+
small_font_size = opt[:font_size] || 12
|
365
|
+
|
362
366
|
(opt[:page_range] ? pages[opt[:page_range]] : pages).each do |page|
|
363
367
|
# Get page dimensions
|
364
368
|
mediabox = page[:CropBox] || page[:MediaBox] || [0, 0, 595.3, 841.9]
|
365
369
|
# set stamp text
|
366
370
|
text = opt[:number_format] % (Array.new(format_repeater) {page_number})
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
center_position = (page_width - box_width)/2
|
379
|
-
left_position = from_side
|
380
|
-
right_position = page_width - from_side - box_width
|
381
|
-
top_position = page_height - from_height
|
382
|
-
bottom_position = from_height + box_height
|
383
|
-
if opt[:number_location].include? :top
|
384
|
-
page.textbox text, {x: center_position, y: top_position }.merge(opt)
|
385
|
-
end
|
386
|
-
if opt[:number_location].include? :bottom
|
387
|
-
page.textbox text, {x: center_position, y: bottom_position }.merge(opt)
|
388
|
-
end
|
389
|
-
if opt[:number_location].include? :top_left
|
390
|
-
page.textbox text, {x: left_position, y: top_position }.merge(opt)
|
391
|
-
end
|
392
|
-
if opt[:number_location].include? :bottom_left
|
393
|
-
page.textbox text, {x: left_position, y: bottom_position }.merge(opt)
|
394
|
-
end
|
395
|
-
if opt[:number_location].include? :top_right
|
396
|
-
page.textbox text, {x: right_position, y: top_position }.merge(opt)
|
397
|
-
end
|
398
|
-
if opt[:number_location].include? :bottom_right
|
399
|
-
page.textbox text, {x: right_position, y: bottom_position }.merge(opt)
|
371
|
+
if opt[:location].include? :center
|
372
|
+
add_opt = {}
|
373
|
+
if opt[:margin_from_height] && !opt[:height] && !opt[:y]
|
374
|
+
add_opt[:height] = mediabox[3] - mediabox[1] - (2*opt[:margin_from_height].to_f)
|
375
|
+
add_opt[:y] = opt[:margin_from_height]
|
376
|
+
end
|
377
|
+
if opt[:margin_from_side] && !opt[:width] && !opt[:x]
|
378
|
+
add_opt[:width] = mediabox[2] - mediabox[0] - (2*opt[:margin_from_side].to_f)
|
379
|
+
add_opt[:x] = opt[:margin_from_side]
|
380
|
+
end
|
381
|
+
page.textbox text, opt.merge(add_opt)
|
400
382
|
end
|
401
|
-
|
402
|
-
|
383
|
+
unless opt[:location] == just_center
|
384
|
+
add_opt = { font_size: small_font_size }.merge(opt)
|
385
|
+
# text = opt[:number_format] % page_number
|
386
|
+
# compute locations for text boxes
|
387
|
+
text_dimantions = page.dimensions_of( text, opt[:font], small_font_size )
|
388
|
+
box_width = text_dimantions[0] * 1.2
|
389
|
+
box_height = text_dimantions[1] * 2
|
390
|
+
add_opt[:width] ||= box_width
|
391
|
+
add_opt[:height] ||= box_height
|
392
|
+
from_height = add_opt[:margin_from_height]
|
393
|
+
from_side = add_opt[:margin_from_side]
|
394
|
+
page_width = mediabox[2]
|
395
|
+
page_height = mediabox[3]
|
396
|
+
center_position = (page_width - box_width)/2
|
397
|
+
left_position = from_side
|
398
|
+
right_position = page_width - from_side - box_width
|
399
|
+
top_position = page_height - from_height
|
400
|
+
bottom_position = from_height + box_height
|
401
|
+
if opt[:location].include? :top
|
402
|
+
page.textbox text, {x: center_position, y: top_position }.merge(add_opt)
|
403
|
+
end
|
404
|
+
if opt[:location].include? :bottom
|
405
|
+
page.textbox text, {x: center_position, y: bottom_position }.merge(add_opt)
|
406
|
+
end
|
407
|
+
if opt[:location].include? :top_left
|
408
|
+
page.textbox text, {x: left_position, y: top_position, font_size: small_font_size }.merge(add_opt)
|
409
|
+
end
|
410
|
+
if opt[:location].include? :bottom_left
|
411
|
+
page.textbox text, {x: left_position, y: bottom_position, font_size: small_font_size }.merge(add_opt)
|
412
|
+
end
|
413
|
+
if opt[:location].include? :top_right
|
414
|
+
page.textbox text, {x: right_position, y: top_position, font_size: small_font_size }.merge(add_opt)
|
415
|
+
end
|
416
|
+
if opt[:location].include? :bottom_right
|
417
|
+
page.textbox text, {x: right_position, y: bottom_position, font_size: small_font_size }.merge(add_opt)
|
418
|
+
end
|
403
419
|
end
|
404
420
|
page_number = page_number.succ
|
405
421
|
end
|
@@ -411,12 +427,15 @@ module CombinePDF
|
|
411
427
|
# stamp:: either a String or a PDF page. If this is a String, you can add formating to add page numbering (i.e. "page number %i"). otherwise remember to escape any percent ('%') sign (i.e. "page \%number not shown\%").
|
412
428
|
# options:: an options Hash.
|
413
429
|
#
|
430
|
+
# If the stamp is a PDF page, only :page_range and :underlay (to reverse-stamp) are valid options.
|
431
|
+
#
|
414
432
|
# If the stamp is a String, than all the options used by {#number_pages} or {Page_Methods#textbox} can be used.
|
415
433
|
#
|
416
|
-
#
|
434
|
+
# The default :location option is :center = meaning the stamp will be stamped all across the page unless the :x, :y, :width or :height options are specified.
|
417
435
|
def stamp_pages stamp, options = {}
|
418
436
|
case stamp
|
419
437
|
when String
|
438
|
+
options[:location] ||= [:center]
|
420
439
|
number_pages({number_format: stamp}.merge(options))
|
421
440
|
when Page_Methods
|
422
441
|
# stamp = stamp.copy(true)
|
data/lib/combine_pdf/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: combine_pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Boaz Segev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-rc4
|