pdf-reader 2.4.2 → 2.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +44 -0
- data/README.md +16 -1
- data/Rakefile +1 -1
- data/examples/extract_fonts.rb +12 -7
- data/examples/rspec.rb +1 -0
- data/lib/pdf/reader/bounding_rectangle_runs_filter.rb +16 -0
- data/lib/pdf/reader/buffer.rb +63 -21
- data/lib/pdf/reader/cid_widths.rb +1 -0
- data/lib/pdf/reader/cmap.rb +5 -3
- data/lib/pdf/reader/encoding.rb +3 -2
- data/lib/pdf/reader/error.rb +11 -3
- data/lib/pdf/reader/filter/ascii85.rb +7 -1
- data/lib/pdf/reader/filter/ascii_hex.rb +6 -1
- data/lib/pdf/reader/filter/depredict.rb +10 -8
- data/lib/pdf/reader/filter/flate.rb +4 -2
- data/lib/pdf/reader/filter/lzw.rb +2 -0
- data/lib/pdf/reader/filter/null.rb +1 -0
- data/lib/pdf/reader/filter/run_length.rb +19 -13
- data/lib/pdf/reader/filter.rb +1 -0
- data/lib/pdf/reader/font.rb +44 -0
- data/lib/pdf/reader/font_descriptor.rb +1 -0
- data/lib/pdf/reader/form_xobject.rb +1 -0
- data/lib/pdf/reader/glyph_hash.rb +16 -9
- data/lib/pdf/reader/glyphlist-zapfdingbats.txt +245 -0
- data/lib/pdf/reader/lzw.rb +4 -2
- data/lib/pdf/reader/null_security_handler.rb +1 -0
- data/lib/pdf/reader/object_cache.rb +1 -0
- data/lib/pdf/reader/object_hash.rb +8 -3
- data/lib/pdf/reader/object_stream.rb +1 -0
- data/lib/pdf/reader/overlapping_runs_filter.rb +11 -4
- data/lib/pdf/reader/page.rb +73 -11
- data/lib/pdf/reader/page_layout.rb +37 -37
- data/lib/pdf/reader/page_state.rb +18 -23
- data/lib/pdf/reader/page_text_receiver.rb +68 -6
- data/lib/pdf/reader/pages_strategy.rb +1 -0
- data/lib/pdf/reader/parser.rb +15 -7
- data/lib/pdf/reader/point.rb +25 -0
- data/lib/pdf/reader/print_receiver.rb +1 -0
- data/lib/pdf/reader/rectangle.rb +113 -0
- data/lib/pdf/reader/reference.rb +1 -0
- data/lib/pdf/reader/register_receiver.rb +1 -0
- data/lib/pdf/reader/resource_methods.rb +5 -0
- data/lib/pdf/reader/standard_security_handler.rb +1 -0
- data/lib/pdf/reader/standard_security_handler_v5.rb +1 -0
- data/lib/pdf/reader/stream.rb +1 -0
- data/lib/pdf/reader/synchronized_cache.rb +1 -0
- data/lib/pdf/reader/text_run.rb +14 -6
- data/lib/pdf/reader/token.rb +1 -0
- data/lib/pdf/reader/transformation_matrix.rb +1 -0
- data/lib/pdf/reader/unimplemented_security_handler.rb +1 -0
- data/lib/pdf/reader/width_calculator/built_in.rb +8 -15
- data/lib/pdf/reader/width_calculator/composite.rb +1 -0
- data/lib/pdf/reader/width_calculator/true_type.rb +1 -0
- data/lib/pdf/reader/width_calculator/type_one_or_three.rb +1 -0
- data/lib/pdf/reader/width_calculator/type_zero.rb +1 -0
- data/lib/pdf/reader/width_calculator.rb +1 -0
- data/lib/pdf/reader/xref.rb +7 -1
- data/lib/pdf/reader/zero_width_runs_filter.rb +13 -0
- data/lib/pdf/reader.rb +29 -6
- data/lib/pdf-reader.rb +1 -0
- data/rbi/pdf-reader.rbi +1763 -0
- metadata +12 -7
- data/lib/pdf/reader/orientation_detector.rb +0 -34
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdf-reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Healy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -215,6 +215,7 @@ files:
|
|
215
215
|
- lib/pdf/reader/afm/Times-Italic.afm
|
216
216
|
- lib/pdf/reader/afm/Times-Roman.afm
|
217
217
|
- lib/pdf/reader/afm/ZapfDingbats.afm
|
218
|
+
- lib/pdf/reader/bounding_rectangle_runs_filter.rb
|
218
219
|
- lib/pdf/reader/buffer.rb
|
219
220
|
- lib/pdf/reader/cid_widths.rb
|
220
221
|
- lib/pdf/reader/cmap.rb
|
@@ -239,13 +240,13 @@ files:
|
|
239
240
|
- lib/pdf/reader/font_descriptor.rb
|
240
241
|
- lib/pdf/reader/form_xobject.rb
|
241
242
|
- lib/pdf/reader/glyph_hash.rb
|
243
|
+
- lib/pdf/reader/glyphlist-zapfdingbats.txt
|
242
244
|
- lib/pdf/reader/glyphlist.txt
|
243
245
|
- lib/pdf/reader/lzw.rb
|
244
246
|
- lib/pdf/reader/null_security_handler.rb
|
245
247
|
- lib/pdf/reader/object_cache.rb
|
246
248
|
- lib/pdf/reader/object_hash.rb
|
247
249
|
- lib/pdf/reader/object_stream.rb
|
248
|
-
- lib/pdf/reader/orientation_detector.rb
|
249
250
|
- lib/pdf/reader/overlapping_runs_filter.rb
|
250
251
|
- lib/pdf/reader/page.rb
|
251
252
|
- lib/pdf/reader/page_layout.rb
|
@@ -253,7 +254,9 @@ files:
|
|
253
254
|
- lib/pdf/reader/page_text_receiver.rb
|
254
255
|
- lib/pdf/reader/pages_strategy.rb
|
255
256
|
- lib/pdf/reader/parser.rb
|
257
|
+
- lib/pdf/reader/point.rb
|
256
258
|
- lib/pdf/reader/print_receiver.rb
|
259
|
+
- lib/pdf/reader/rectangle.rb
|
257
260
|
- lib/pdf/reader/reference.rb
|
258
261
|
- lib/pdf/reader/register_receiver.rb
|
259
262
|
- lib/pdf/reader/resource_methods.rb
|
@@ -272,14 +275,16 @@ files:
|
|
272
275
|
- lib/pdf/reader/width_calculator/type_one_or_three.rb
|
273
276
|
- lib/pdf/reader/width_calculator/type_zero.rb
|
274
277
|
- lib/pdf/reader/xref.rb
|
278
|
+
- lib/pdf/reader/zero_width_runs_filter.rb
|
279
|
+
- rbi/pdf-reader.rbi
|
275
280
|
homepage: https://github.com/yob/pdf-reader
|
276
281
|
licenses:
|
277
282
|
- MIT
|
278
283
|
metadata:
|
279
284
|
bug_tracker_uri: https://github.com/yob/pdf-reader/issues
|
280
|
-
changelog_uri: https://github.com/yob/pdf-reader/blob/v2.
|
281
|
-
documentation_uri: https://www.rubydoc.info/gems/pdf-reader/2.
|
282
|
-
source_code_uri: https://github.com/yob/pdf-reader/tree/v2.
|
285
|
+
changelog_uri: https://github.com/yob/pdf-reader/blob/v2.8.0/CHANGELOG
|
286
|
+
documentation_uri: https://www.rubydoc.info/gems/pdf-reader/2.8.0
|
287
|
+
source_code_uri: https://github.com/yob/pdf-reader/tree/v2.8.0
|
283
288
|
post_install_message:
|
284
289
|
rdoc_options:
|
285
290
|
- "--title"
|
@@ -293,7 +298,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
293
298
|
requirements:
|
294
299
|
- - ">="
|
295
300
|
- !ruby/object:Gem::Version
|
296
|
-
version:
|
301
|
+
version: '2.0'
|
297
302
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
303
|
requirements:
|
299
304
|
- - ">="
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
class PDF::Reader
|
5
|
-
# Small util class for detecting the orientation of a single PDF page. Accounts
|
6
|
-
# for any page rotation that is in place.
|
7
|
-
#
|
8
|
-
# OrientationDetector.new(:MediaBox => [0,0,612,792]).orientation
|
9
|
-
# => "portrait"
|
10
|
-
#
|
11
|
-
class OrientationDetector
|
12
|
-
def initialize(attributes)
|
13
|
-
@attributes = attributes
|
14
|
-
end
|
15
|
-
|
16
|
-
def orientation
|
17
|
-
@orientation ||= detect_orientation
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def detect_orientation
|
23
|
-
llx,lly,urx,ury = @attributes[:MediaBox]
|
24
|
-
rotation = @attributes[:Rotate].to_i
|
25
|
-
width = (urx.to_i - llx.to_i).abs
|
26
|
-
height = (ury.to_i - lly.to_i).abs
|
27
|
-
if width > height
|
28
|
-
(rotation % 180).zero? ? 'landscape' : 'portrait'
|
29
|
-
else
|
30
|
-
(rotation % 180).zero? ? 'portrait' : 'landscape'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|