hexapdf 0.11.5 → 0.11.6
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/hexapdf/document/pages.rb +4 -0
- data/lib/hexapdf/layout/text_box.rb +8 -3
- data/lib/hexapdf/version.rb +1 -1
- data/test/hexapdf/layout/test_text_box.rb +20 -2
- data/test/hexapdf/test_writer.rb +2 -2
- metadata +3 -6
- data/CONTRIBUTERS +0 -5
- data/VERSION +0 -1
- data/man/man1/hexapdf.1 +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60a5bf5332e0ebf949653852c2f77a7a78861b120bf0c5eed30ee6591cd0736e
|
4
|
+
data.tar.gz: 79c8495ffcf48c4d81180ab9aa39e5ee12386f0a015ccef2460e453a879609d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ded53b4977a8caafc8811b80f42fd0e137fed0af84072ee864a30f02ac729d5327f85840c2f7eb21426a5f3beee8caa6b2d40f91e0521180f161db8ccad86a48
|
7
|
+
data.tar.gz: c1f7c2fb6e6fd2eacef1d11421768844471d0b048bf0eb36558f6a0a6426eed3438db1309aa17e3cd4e7a1e973affab946b52073c10ad7a37e0d9c3ce46cf3b8
|
data/CHANGELOG.md
CHANGED
@@ -107,6 +107,8 @@ module HexaPDF
|
|
107
107
|
# Deletes the given page object from the document's page tree (but *not* from the document).
|
108
108
|
#
|
109
109
|
# Returns the page object, or +nil+ if the page object was not in the page tree.
|
110
|
+
#
|
111
|
+
# Also see: HexaPDF::Type::PageTreeNode#delete_page
|
110
112
|
def delete(page)
|
111
113
|
@document.catalog.pages.delete_page(page)
|
112
114
|
end
|
@@ -118,6 +120,8 @@ module HexaPDF
|
|
118
120
|
# document).
|
119
121
|
#
|
120
122
|
# Returns the page object, or +nil+ if the index was invalid.
|
123
|
+
#
|
124
|
+
# Also see: HexaPDF::Type::PageTreeNode#delete_page
|
121
125
|
def delete_at(index)
|
122
126
|
@document.catalog.pages.delete_page(index)
|
123
127
|
end
|
@@ -64,6 +64,9 @@ module HexaPDF
|
|
64
64
|
#
|
65
65
|
# Also see TextLayouter#style for other style properties taken into account.
|
66
66
|
def fit(available_width, available_height, frame)
|
67
|
+
return false if (@initial_width > 0 && @initial_width > available_width) ||
|
68
|
+
(@initial_height > 0 && @initial_height > available_height)
|
69
|
+
|
67
70
|
@width = @height = 0
|
68
71
|
@result = if style.position == :flow
|
69
72
|
@tl.fit(@items, frame.width_specification, frame.contour_line.bbox.height)
|
@@ -74,8 +77,8 @@ module HexaPDF
|
|
74
77
|
height = (@initial_height > 0 ? @initial_height : available_height) - @height
|
75
78
|
@tl.fit(@items, width, height)
|
76
79
|
end
|
77
|
-
@width += @result.lines.max_by(&:width)&.width || 0
|
78
|
-
@height += @result.height
|
80
|
+
@width += (@initial_width > 0 ? width : @result.lines.max_by(&:width)&.width || 0)
|
81
|
+
@height += (@initial_height > 0 ? height : @result.height)
|
79
82
|
if style.last_line_gap && @result.lines.last
|
80
83
|
@height += style.line_spacing.gap(@result.lines.last, @result.lines.last)
|
81
84
|
end
|
@@ -86,7 +89,9 @@ module HexaPDF
|
|
86
89
|
# Splits the text box into two boxes if necessary and possible.
|
87
90
|
def split(available_width, available_height, frame)
|
88
91
|
fit(available_width, available_height, frame) unless @result
|
89
|
-
if @
|
92
|
+
if @width > available_width || @height > available_height
|
93
|
+
[nil, self]
|
94
|
+
elsif @result.remaining_items.empty?
|
90
95
|
[self]
|
91
96
|
elsif @result.lines.empty?
|
92
97
|
[nil, self]
|
data/lib/hexapdf/version.rb
CHANGED
@@ -31,11 +31,11 @@ describe HexaPDF::Layout::TextBox do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "respects the set width and height" do
|
34
|
-
box = create_box([@inline_box]
|
34
|
+
box = create_box([@inline_box], width: 40, height: 50, style: {padding: 10})
|
35
35
|
assert(box.fit(100, 100, @frame))
|
36
36
|
assert_equal(40, box.width)
|
37
37
|
assert_equal(50, box.height)
|
38
|
-
assert_equal([
|
38
|
+
assert_equal([10], box.instance_variable_get(:@result).lines.map(&:width))
|
39
39
|
end
|
40
40
|
|
41
41
|
it "fits into the frame's outline" do
|
@@ -52,6 +52,16 @@ describe HexaPDF::Layout::TextBox do
|
|
52
52
|
assert_equal(50, box.width)
|
53
53
|
assert_equal(20, box.height)
|
54
54
|
end
|
55
|
+
|
56
|
+
it "can't fit the text box if the set width is bigger than the available width" do
|
57
|
+
box = create_box([@inline_box], width: 101)
|
58
|
+
refute(box.fit(100, 100, @frame))
|
59
|
+
end
|
60
|
+
|
61
|
+
it "can't fit the text box if the set height is bigger than the available height" do
|
62
|
+
box = create_box([@inline_box], height: 101)
|
63
|
+
refute(box.fit(100, 100, @frame))
|
64
|
+
end
|
55
65
|
end
|
56
66
|
|
57
67
|
describe "split" do
|
@@ -70,6 +80,14 @@ describe HexaPDF::Layout::TextBox do
|
|
70
80
|
assert_equal([nil, box], box.split(5, 20, @frame))
|
71
81
|
end
|
72
82
|
|
83
|
+
it "works if the whole text box doesn't fits" do
|
84
|
+
box = create_box([@inline_box], width: 102)
|
85
|
+
assert_equal([nil, box], box.split(100, 100, @frame))
|
86
|
+
|
87
|
+
box = create_box([@inline_box], height: 102)
|
88
|
+
assert_equal([nil, box], box.split(100, 100, @frame))
|
89
|
+
end
|
90
|
+
|
73
91
|
it "splits the box if necessary" do
|
74
92
|
box = create_box([@inline_box] * 10)
|
75
93
|
boxes = box.split(50, 10, @frame)
|
data/test/hexapdf/test_writer.rb
CHANGED
@@ -40,7 +40,7 @@ describe HexaPDF::Writer do
|
|
40
40
|
219
|
41
41
|
%%EOF
|
42
42
|
3 0 obj
|
43
|
-
<</Producer(HexaPDF version 0.11.
|
43
|
+
<</Producer(HexaPDF version 0.11.6)>>
|
44
44
|
endobj
|
45
45
|
xref
|
46
46
|
3 1
|
@@ -72,7 +72,7 @@ describe HexaPDF::Writer do
|
|
72
72
|
141
|
73
73
|
%%EOF
|
74
74
|
6 0 obj
|
75
|
-
<</Producer(HexaPDF version 0.11.
|
75
|
+
<</Producer(HexaPDF version 0.11.6)>>
|
76
76
|
endobj
|
77
77
|
2 0 obj
|
78
78
|
<</Length 10>>stream
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hexapdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Leitner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cmdparse
|
@@ -102,11 +102,9 @@ extensions: []
|
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
104
|
- CHANGELOG.md
|
105
|
-
- CONTRIBUTERS
|
106
105
|
- LICENSE
|
107
106
|
- README.md
|
108
107
|
- Rakefile
|
109
|
-
- VERSION
|
110
108
|
- agpl-3.0.txt
|
111
109
|
- bin/hexapdf
|
112
110
|
- data/hexapdf/afm/Courier-Bold.afm
|
@@ -401,7 +399,6 @@ files:
|
|
401
399
|
- lib/hexapdf/version.rb
|
402
400
|
- lib/hexapdf/writer.rb
|
403
401
|
- lib/hexapdf/xref_section.rb
|
404
|
-
- man/man1/hexapdf.1
|
405
402
|
- test/data/aes-test-vectors/CBCGFSbox-128-decrypt.data.gz
|
406
403
|
- test/data/aes-test-vectors/CBCGFSbox-128-encrypt.data.gz
|
407
404
|
- test/data/aes-test-vectors/CBCGFSbox-192-decrypt.data.gz
|
@@ -637,7 +634,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
637
634
|
- !ruby/object:Gem::Version
|
638
635
|
version: '0'
|
639
636
|
requirements: []
|
640
|
-
rubygems_version: 3.
|
637
|
+
rubygems_version: 3.0.3
|
641
638
|
signing_key:
|
642
639
|
specification_version: 4
|
643
640
|
summary: HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
data/CONTRIBUTERS
DELETED
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.11.5
|
data/man/man1/hexapdf.1
DELETED
File without changes
|