pdf-reader 2.10.0 → 2.11.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/rbi/pdf-reader.rbi CHANGED
@@ -1,16 +1,21 @@
1
1
  # typed: strong
2
2
  module PDF
3
3
  class Reader
4
- sig { returns(T.untyped) }
4
+ sig { returns(PDF::Reader::ObjectHash) }
5
5
  attr_reader :objects
6
6
 
7
- sig { params(input: T.any(String, IO), opts: T::Hash[T.untyped, T.untyped]).void }
8
- def initialize(input, opts = {}); end
7
+ sig { params(input: T.any(String, Tempfile, IO), opts: T::Hash[T.untyped, T.untyped]).void }
8
+ def initialize(input, opts = {})
9
+ @cache = T.let(T.unsafe(nil), PDF::Reader::ObjectCache)
10
+ @objects = T.let(T.unsafe(nil), PDF::Reader::ObjectHash)
11
+ @page_count = T.let(T.unsafe(nil), T.nilable(Integer))
12
+ @root = T.let(T.unsafe(nil), T.nilable(T.nilable(T::Hash[Symbol, T.untyped])))
13
+ end
9
14
 
10
15
  sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
11
16
  def info; end
12
17
 
13
- sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
18
+ sig { returns(T.nilable(String)) }
14
19
  def metadata; end
15
20
 
16
21
  sig { returns(Integer) }
@@ -19,7 +24,7 @@ module PDF
19
24
  sig { returns(Float) }
20
25
  def pdf_version; end
21
26
 
22
- sig { params(input: T.any(String, IO), opts: T::Hash[T.untyped, T.untyped], block: T.proc.params(arg0: PDF::Reader).void).returns(T.untyped) }
27
+ sig { params(input: T.any(String, Tempfile, IO), opts: T::Hash[T.untyped, T.untyped], block: T.proc.params(arg0: PDF::Reader).void).returns(T.untyped) }
23
28
  def self.open(input, opts = {}, &block); end
24
29
 
25
30
  sig { returns(T::Array[PDF::Reader::Page]) }
@@ -70,28 +75,29 @@ module PDF
70
75
  end
71
76
 
72
77
  class Buffer
73
- TOKEN_WHITESPACE = [0x00, 0x09, 0x0A, 0x0C, 0x0D, 0x20]
74
- TOKEN_DELIMITER = [0x25, 0x3C, 0x3E, 0x28, 0x5B, 0x7B, 0x29, 0x5D, 0x7D, 0x2F]
75
- LEFT_PAREN = "("
76
- LESS_THAN = "<"
77
- STREAM = "stream"
78
- ID = "ID"
79
- FWD_SLASH = "/"
80
- NULL_BYTE = "\x00"
81
- CR = "\r"
82
- LF = "\n"
83
- CRLF = "\r\n"
84
- WHITE_SPACE = [LF, CR, ' ']
85
- TRAILING_BYTECOUNT = 5000
78
+ TOKEN_WHITESPACE = T.let(T.unsafe(nil), T::Array[Integer])
79
+ TOKEN_DELIMITER = T.let(T.unsafe(nil), T::Array[Integer])
80
+ LEFT_PAREN = T.let(T.unsafe(nil), String)
81
+ LESS_THAN = T.let(T.unsafe(nil), String)
82
+ STREAM = T.let(T.unsafe(nil), String)
83
+ ID = T.let(T.unsafe(nil), String)
84
+ FWD_SLASH = T.let(T.unsafe(nil), String)
85
+ NULL_BYTE = T.let(T.unsafe(nil), String)
86
+ CR = T.let(T.unsafe(nil), String)
87
+ LF = T.let(T.unsafe(nil), String)
88
+ CRLF = T.let(T.unsafe(nil), String)
89
+ WHITE_SPACE = T.let(T.unsafe(nil), T::Array[String])
90
+ TRAILING_BYTECOUNT = T.let(T.unsafe(nil), Integer)
91
+ DIGITS_ONLY = T.let(T.unsafe(nil), Regexp)
86
92
 
87
93
  sig { returns(Integer) }
88
94
  attr_reader :pos
89
95
 
90
- sig { params(io: T.any(StringIO, File), opts: T::Hash[Symbol, T.untyped]).void }
96
+ sig { params(io: T.any(StringIO, Tempfile, IO), opts: T::Hash[Symbol, T.untyped]).void }
91
97
  def initialize(io, opts = {})
92
98
  @pos = T.let(T.unsafe(nil), Integer)
93
99
  @tokens = T.let(T.unsafe(nil), T::Array[T.any(String, PDF::Reader::Reference)])
94
- @io = T.let(T.unsafe(nil), T.any(StringIO, File))
100
+ @io = T.let(T.unsafe(nil), T.any(StringIO, Tempfile, IO))
95
101
  @in_content_stream = T.let(T.unsafe(nil), T::Boolean)
96
102
  end
97
103
 
@@ -161,17 +167,7 @@ module PDF
161
167
  end
162
168
 
163
169
  class CMap
164
- CMAP_KEYWORDS = {
165
- "begincodespacerange" => 1,
166
- "endcodespacerange" => 1,
167
- "beginbfchar" => 1,
168
- "endbfchar" => 1,
169
- "beginbfrange" => 1,
170
- "endbfrange" => 1,
171
- "begin" => 1,
172
- "begincmap" => 1,
173
- "def" => 1
174
- }
170
+ CMAP_KEYWORDS = T.let(T.unsafe(nil), T::Hash[String, Symbol])
175
171
 
176
172
  sig { returns(T.untyped) }
177
173
  attr_reader :map
@@ -210,20 +206,27 @@ module PDF
210
206
  end
211
207
 
212
208
  class Encoding
213
- CONTROL_CHARS = [0,1,2,3,4,5,6,7,8,11,12,14,15,16,17,18,19,20,21,22,23,
214
- 24,25,26,27,28,29,30,31]
215
- UNKNOWN_CHAR = 0x25AF
209
+ CONTROL_CHARS = T.let(T.unsafe(nil), T::Array[Integer])
210
+ UNKNOWN_CHAR = T.let(T.unsafe(nil), Integer)
216
211
 
217
- sig { returns(T.untyped) }
212
+ sig { returns(String) }
218
213
  attr_reader :unpack
219
214
 
220
215
  sig { params(enc: T.untyped).void }
221
- def initialize(enc); end
216
+ def initialize(enc)
217
+ @mapping = T.let(T.unsafe(nil), T::Hash[Integer, Integer])
218
+ @unpack = T.let(T.unsafe(nil), String)
219
+ @enc_name = T.let(T.unsafe(nil), Symbol)
220
+ @string_cache = T.let(T.unsafe(nil), T::Hash[Integer, String])
221
+ @map_file = T.let(T.unsafe(nil), T.nilable(String))
222
+ @differences = T.let(T.unsafe(nil), T.nilable(T::Hash[Integer, Integer]))
223
+ @glyphlist = T.let(T.unsafe(nil), T.nilable(PDF::Reader::GlyphHash))
224
+ end
222
225
 
223
- sig { params(diff: T.untyped).returns(T.untyped) }
226
+ sig { params(diff: T::Array[T.any(Integer, Symbol)]).returns(T::Hash[Integer, Integer]) }
224
227
  def differences=(diff); end
225
228
 
226
- sig { returns(T.untyped) }
229
+ sig { returns(T::Hash[Integer, Integer]) }
227
230
  def differences; end
228
231
 
229
232
  sig { params(str: String).returns(String) }
@@ -235,31 +238,31 @@ module PDF
235
238
  sig { params(glyph_code: Integer).returns(T::Array[Symbol]) }
236
239
  def int_to_name(glyph_code); end
237
240
 
238
- sig { returns(T.untyped) }
241
+ sig { returns(T::Hash[Integer, Integer]) }
239
242
  def default_mapping; end
240
243
 
241
- sig { params(glyph_code: T.untyped).returns(T.untyped) }
244
+ sig { params(glyph_code: Integer).returns(String) }
242
245
  def internal_int_to_utf8_string(glyph_code); end
243
246
 
244
- sig { returns(T.untyped) }
247
+ sig { returns(T::Boolean) }
245
248
  def utf8_conversion_impossible?; end
246
249
 
247
- sig { params(times: T.untyped).returns(T.untyped) }
250
+ sig { params(times: Integer).returns(String) }
248
251
  def little_boxes(times); end
249
252
 
250
- sig { params(str: T.untyped).returns(T.untyped) }
253
+ sig { params(str: String).returns(String) }
251
254
  def convert_to_utf8(str); end
252
255
 
253
- sig { params(enc: T.untyped).returns(T.untyped) }
256
+ sig { params(enc: T.untyped).returns(String) }
254
257
  def get_unpack(enc); end
255
258
 
256
- sig { params(enc: T.untyped).returns(T.untyped) }
259
+ sig { params(enc: T.untyped).returns(T.nilable(String)) }
257
260
  def get_mapping_file(enc); end
258
261
 
259
- sig { returns(T.untyped) }
262
+ sig { returns(PDF::Reader::GlyphHash) }
260
263
  def glyphlist; end
261
264
 
262
- sig { params(file: T.untyped).returns(T.untyped) }
265
+ sig { params(file: String).void }
263
266
  def load_mapping(file); end
264
267
  end
265
268
 
@@ -474,16 +477,22 @@ module PDF
474
477
  end
475
478
 
476
479
  class GlyphHash
480
+ @@by_name_cache = T.let(T.unsafe(nil), T.nilable(T::Hash[Symbol, Integer]))
481
+ @@by_codepoint_cache = T.let(T.unsafe(nil), T.nilable(T::Hash[Integer, T::Array[Symbol]]))
482
+
477
483
  sig { void }
478
- def initialize; end
484
+ def initialize
485
+ @by_name = T.let(T.unsafe(nil), T::Hash[Symbol, Integer])
486
+ @by_codepoint = T.let(T.unsafe(nil), T::Hash[Integer, T::Array[Symbol]])
487
+ end
479
488
 
480
- sig { params(name: T.untyped).returns(T.untyped) }
489
+ sig { params(name: T.nilable(Symbol)).returns(T.nilable(Integer)) }
481
490
  def name_to_unicode(name); end
482
491
 
483
- sig { params(codepoint: T.untyped).returns(T.untyped) }
492
+ sig { params(codepoint: T.nilable(Integer)).returns(T::Array[Symbol]) }
484
493
  def unicode_to_name(codepoint); end
485
494
 
486
- sig { returns(T.untyped) }
495
+ sig { returns([T::Hash[Symbol, Integer], T::Hash[Integer, T::Array[Symbol]]]) }
487
496
  def load_adobe_glyph_mapping; end
488
497
  end
489
498
 
@@ -633,25 +642,45 @@ module PDF
633
642
  sig { returns(T.untyped) }
634
643
  attr_accessor :default
635
644
 
636
- sig { returns(T.untyped) }
645
+ sig { returns(T::Hash[Symbol, T.untyped]) }
637
646
  attr_reader :trailer
638
647
 
639
- sig { returns(T.untyped) }
648
+ sig { returns(Float) }
640
649
  attr_reader :pdf_version
641
650
 
642
- sig { returns(T.untyped) }
651
+ sig { returns(
652
+ T.any(
653
+ PDF::Reader::NullSecurityHandler,
654
+ PDF::Reader::AesV2SecurityHandler,
655
+ PDF::Reader::AesV3SecurityHandler,
656
+ PDF::Reader::Rc4SecurityHandler,
657
+ )) }
643
658
  attr_reader :sec_handler
644
659
 
645
- sig { params(input: T.untyped, opts: T.untyped).void }
646
- def initialize(input, opts = {}); end
660
+ sig { params(input: T.any(IO, Tempfile, StringIO, String), opts: T::Hash[Symbol, T.untyped]).void }
661
+ def initialize(input, opts = {})
662
+ @io = T.let(T.unsafe(nil), T.any(IO, Tempfile, StringIO))
663
+ @xref = T.let(T.unsafe(nil), PDF::Reader::XRef)
664
+ @pdf_version = T.let(T.unsafe(nil), Float)
665
+ @trailer = T.let(T.unsafe(nil), T::Hash[Symbol, T.untyped])
666
+ @cache = T.let(T.unsafe(nil), PDF::Reader::ObjectCache)
667
+ @sec_handler = T.let(T.unsafe(nil), T.any(
668
+ PDF::Reader::NullSecurityHandler,
669
+ PDF::Reader::AesV2SecurityHandler,
670
+ PDF::Reader::AesV3SecurityHandler,
671
+ PDF::Reader::Rc4SecurityHandler,
672
+ ))
673
+ @page_references = T.let(T.unsafe(nil), T.nilable(T::Array[T.any(PDF::Reader::Reference, T::Hash[Symbol, T.untyped])]))
674
+ @object_streams = T.let(T.unsafe(nil), T.nilable(T::Hash[PDF::Reader::Reference, PDF::Reader::ObjectStream]))
675
+ end
647
676
 
648
- sig { params(ref: T.untyped).returns(T.untyped) }
677
+ sig { params(ref: T.any(Integer, PDF::Reader::Reference)).returns(T.nilable(Symbol)) }
649
678
  def obj_type(ref); end
650
679
 
651
- sig { params(ref: T.untyped).returns(T.untyped) }
680
+ sig { params(ref: T.any(Integer, PDF::Reader::Reference)).returns(T::Boolean) }
652
681
  def stream?(ref); end
653
682
 
654
- sig { params(key: T.untyped).returns(T.untyped) }
683
+ sig { params(key: T.any(Integer, PDF::Reader::Reference)).returns(T.untyped) }
655
684
  def [](key); end
656
685
 
657
686
  sig { params(key: T.untyped).returns(T.untyped) }
@@ -735,7 +764,7 @@ module PDF
735
764
  sig { returns(T.untyped) }
736
765
  def to_a; end
737
766
 
738
- sig { returns(T::Array[PDF::Reader::Reference]) }
767
+ sig { returns(T::Array[T.any(PDF::Reader::Reference, T::Hash[Symbol, T.untyped])]) }
739
768
  def page_references; end
740
769
 
741
770
  sig { returns(T::Boolean) }
@@ -765,16 +794,16 @@ module PDF
765
794
  sig { returns(T.untyped) }
766
795
  def object_streams; end
767
796
 
768
- sig { params(obj: T::Hash[T.untyped, T.untyped]).returns(T::Array[T::Hash[T.untyped, T.untyped]]) }
797
+ sig { params(obj: T.any(PDF::Reader::Reference, T::Hash[Symbol, T.untyped])).returns(T::Array[T.any(PDF::Reader::Reference, T::Hash[Symbol, T.untyped])]) }
769
798
  def get_page_objects(obj); end
770
799
 
771
800
  sig { returns(Float) }
772
801
  def read_version; end
773
802
 
774
- sig { params(input: T.untyped).returns(IO) }
803
+ sig { params(input: T.any(IO, Tempfile, StringIO, String)).returns(T.any(IO, Tempfile, StringIO)) }
775
804
  def extract_io_from(input); end
776
805
 
777
- sig { params(input: T.untyped).returns(T.untyped) }
806
+ sig { params(input: String).returns(String) }
778
807
  def read_as_binary(input); end
779
808
  end
780
809
 
@@ -783,9 +812,15 @@ module PDF
783
812
  def initialize(stream)
784
813
  @dict = T.let(T.unsafe(nil), T::Hash[Symbol, T.untyped])
785
814
  @data = T.let(T.unsafe(nil), String)
815
+ @offsets = T.let(T.unsafe(nil), T.nilable(T::Hash[Integer, Integer]))
816
+ @buffer = T.let(T.unsafe(nil), T.nilable(PDF::Reader::Buffer))
786
817
  end
787
818
 
788
- sig { params(objid: T.untyped).returns(T.untyped) }
819
+ sig {
820
+ params(objid: Integer).returns(
821
+ T.any(PDF::Reader::Reference, PDF::Reader::Token, Numeric, String, Symbol, T::Array[T.untyped], T::Hash[T.untyped, T.untyped], NilClass)
822
+ )
823
+ }
789
824
  def [](objid); end
790
825
 
791
826
  sig { returns(Integer) }
@@ -802,7 +837,7 @@ module PDF
802
837
  end
803
838
 
804
839
  class OverlappingRunsFilter
805
- OVERLAPPING_THRESHOLD = 0.5
840
+ OVERLAPPING_THRESHOLD = T.let(T.unsafe(nil), Float)
806
841
 
807
842
  sig { params(runs: T::Array[PDF::Reader::TextRun]).returns(T::Array[PDF::Reader::TextRun]) }
808
843
  def self.exclude_redundant_runs(runs); end
@@ -811,6 +846,11 @@ module PDF
811
846
  def self.detect_intersection(sweep_line_status, event_point); end
812
847
  end
813
848
 
849
+ class NoTextFilter
850
+ sig { params(runs: T::Array[PDF::Reader::TextRun]).returns(T::Array[PDF::Reader::TextRun]) }
851
+ def self.exclude_empty_strings(runs); end
852
+ end
853
+
814
854
  class EventPoint
815
855
  sig { returns(Numeric) }
816
856
  attr_reader :x
@@ -819,7 +859,10 @@ module PDF
819
859
  attr_reader :run
820
860
 
821
861
  sig { params(x: Numeric, run: PDF::Reader::TextRun).void }
822
- def initialize(x, run); end
862
+ def initialize(x, run)
863
+ @x = T.let(T.unsafe(nil), Numeric)
864
+ @run = T.let(T.unsafe(nil), PDF::Reader::TextRun)
865
+ end
823
866
 
824
867
  sig { returns(T::Boolean) }
825
868
  def start?; end
@@ -829,14 +872,22 @@ module PDF
829
872
  sig { returns(PDF::Reader::ObjectHash) }
830
873
  attr_reader :objects
831
874
 
832
- sig { returns(T.untyped) }
875
+ sig { returns(T::Hash[Symbol, T.untyped]) }
833
876
  attr_reader :page_object
834
877
 
835
- sig { returns(T.untyped) }
878
+ sig { returns(T.any(PDF::Reader::ObjectCache, T::Hash[T.untyped, T.untyped])) }
836
879
  attr_reader :cache
837
880
 
838
881
  sig { params(objects: PDF::Reader::ObjectHash, pagenum: Integer, options: T::Hash[Symbol, T.untyped]).void }
839
- def initialize(objects, pagenum, options = {}); end
882
+ def initialize(objects, pagenum, options = {})
883
+ @objects = T.let(T.unsafe(nil), PDF::Reader::ObjectHash)
884
+ @pagenum = T.let(T.unsafe(nil), Integer)
885
+ @page_object = T.let(T.unsafe(nil), T::Hash[Symbol, T.untyped])
886
+ @cache = T.let(T.unsafe(nil), T.any(PDF::Reader::ObjectCache, T::Hash[T.untyped, T.untyped]))
887
+ @attributes = T.let(T.unsafe(nil), T.nilable(T::Hash[Symbol, T.untyped]))
888
+ @root = T.let(T.unsafe(nil), T.nilable(T::Hash[Symbol, T.untyped]))
889
+ @resources = T.let(T.unsafe(nil), T.nilable(PDF::Reader::Resources))
890
+ end
840
891
 
841
892
  sig { returns(Integer) }
842
893
  def number; end
@@ -886,10 +937,10 @@ module PDF
886
937
  sig { returns(PDF::Reader::Resources) }
887
938
  def resources; end
888
939
 
889
- sig { params(receivers: T.untyped, instructions: T.untyped).returns(T.untyped) }
940
+ sig { params(receivers: T::Array[T.untyped], instructions: String).void }
890
941
  def content_stream(receivers, instructions); end
891
942
 
892
- sig { params(receivers: T.untyped, name: T.untyped, params: T.untyped).returns(T.untyped) }
943
+ sig { params(receivers: T::Array[Object], name: Symbol, params: T::Array[T.untyped]).void }
893
944
  def callback(receivers, name, params = []); end
894
945
 
895
946
  sig { returns(T.untyped) }
@@ -903,10 +954,21 @@ module PDF
903
954
  end
904
955
 
905
956
  class PageLayout
906
- DEFAULT_FONT_SIZE = 12
957
+ DEFAULT_FONT_SIZE = T.let(T.unsafe(nil), Numeric)
907
958
 
908
959
  sig { params(runs: T::Array[PDF::Reader::TextRun], mediabox: T.any(T::Array[Numeric], PDF::Reader::Rectangle)).void }
909
- def initialize(runs, mediabox); end
960
+ def initialize(runs, mediabox)
961
+ @mediabox = T.let(T.unsafe(nil), PDF::Reader::Rectangle)
962
+ @runs = T.let(T.unsafe(nil), T::Array[PDF::Reader::TextRun])
963
+ @mean_font_size = T.let(T.unsafe(nil), Numeric)
964
+ @median_glyph_width = T.let(T.unsafe(nil), Numeric)
965
+ @x_offset = T.let(T.unsafe(nil), Numeric)
966
+ @y_offset = T.let(T.unsafe(nil), Numeric)
967
+ @row_count = T.let(T.unsafe(nil), T.nilable(Integer))
968
+ @col_count = T.let(T.unsafe(nil), T.nilable(Integer))
969
+ @row_multiplier = T.let(T.unsafe(nil), T.nilable(Numeric))
970
+ @col_multiplier = T.let(T.unsafe(nil), T.nilable(Numeric))
971
+ end
910
972
 
911
973
  sig { returns(String) }
912
974
  def to_s; end
@@ -943,6 +1005,12 @@ module PDF
943
1005
 
944
1006
  sig { params(mediabox: T.untyped).returns(T.untyped) }
945
1007
  def process_mediabox(mediabox); end
1008
+
1009
+ sig { returns(Numeric) }
1010
+ def page_width; end
1011
+
1012
+ sig { returns(Numeric) }
1013
+ def page_height; end
946
1014
  end
947
1015
 
948
1016
  class PageState
@@ -1127,81 +1195,7 @@ module PDF
1127
1195
  end
1128
1196
 
1129
1197
  class PagesStrategy
1130
- OPERATORS = {
1131
- 'b' => :close_fill_stroke,
1132
- 'B' => :fill_stroke,
1133
- 'b*' => :close_fill_stroke_with_even_odd,
1134
- 'B*' => :fill_stroke_with_even_odd,
1135
- 'BDC' => :begin_marked_content_with_pl,
1136
- 'BI' => :begin_inline_image,
1137
- 'BMC' => :begin_marked_content,
1138
- 'BT' => :begin_text_object,
1139
- 'BX' => :begin_compatibility_section,
1140
- 'c' => :append_curved_segment,
1141
- 'cm' => :concatenate_matrix,
1142
- 'CS' => :set_stroke_color_space,
1143
- 'cs' => :set_nonstroke_color_space,
1144
- 'd' => :set_line_dash,
1145
- 'd0' => :set_glyph_width,
1146
- 'd1' => :set_glyph_width_and_bounding_box,
1147
- 'Do' => :invoke_xobject,
1148
- 'DP' => :define_marked_content_with_pl,
1149
- 'EI' => :end_inline_image,
1150
- 'EMC' => :end_marked_content,
1151
- 'ET' => :end_text_object,
1152
- 'EX' => :end_compatibility_section,
1153
- 'f' => :fill_path_with_nonzero,
1154
- 'F' => :fill_path_with_nonzero,
1155
- 'f*' => :fill_path_with_even_odd,
1156
- 'G' => :set_gray_for_stroking,
1157
- 'g' => :set_gray_for_nonstroking,
1158
- 'gs' => :set_graphics_state_parameters,
1159
- 'h' => :close_subpath,
1160
- 'i' => :set_flatness_tolerance,
1161
- 'ID' => :begin_inline_image_data,
1162
- 'j' => :set_line_join_style,
1163
- 'J' => :set_line_cap_style,
1164
- 'K' => :set_cmyk_color_for_stroking,
1165
- 'k' => :set_cmyk_color_for_nonstroking,
1166
- 'l' => :append_line,
1167
- 'm' => :begin_new_subpath,
1168
- 'M' => :set_miter_limit,
1169
- 'MP' => :define_marked_content_point,
1170
- 'n' => :end_path,
1171
- 'q' => :save_graphics_state,
1172
- 'Q' => :restore_graphics_state,
1173
- 're' => :append_rectangle,
1174
- 'RG' => :set_rgb_color_for_stroking,
1175
- 'rg' => :set_rgb_color_for_nonstroking,
1176
- 'ri' => :set_color_rendering_intent,
1177
- 's' => :close_and_stroke_path,
1178
- 'S' => :stroke_path,
1179
- 'SC' => :set_color_for_stroking,
1180
- 'sc' => :set_color_for_nonstroking,
1181
- 'SCN' => :set_color_for_stroking_and_special,
1182
- 'scn' => :set_color_for_nonstroking_and_special,
1183
- 'sh' => :paint_area_with_shading_pattern,
1184
- 'T*' => :move_to_start_of_next_line,
1185
- 'Tc' => :set_character_spacing,
1186
- 'Td' => :move_text_position,
1187
- 'TD' => :move_text_position_and_set_leading,
1188
- 'Tf' => :set_text_font_and_size,
1189
- 'Tj' => :show_text,
1190
- 'TJ' => :show_text_with_positioning,
1191
- 'TL' => :set_text_leading,
1192
- 'Tm' => :set_text_matrix_and_text_line_matrix,
1193
- 'Tr' => :set_text_rendering_mode,
1194
- 'Ts' => :set_text_rise,
1195
- 'Tw' => :set_word_spacing,
1196
- 'Tz' => :set_horizontal_text_scaling,
1197
- 'v' => :append_curved_segment_initial_point_replicated,
1198
- 'w' => :set_line_width,
1199
- 'W' => :set_clipping_path_with_nonzero,
1200
- 'W*' => :set_clipping_path_with_even_odd,
1201
- 'y' => :append_curved_segment_final_point_replicated,
1202
- '\'' => :move_to_next_line_and_show_text,
1203
- '"' => :set_spacing_next_line_show_text,
1204
- }
1198
+ OPERATORS = T.let(T.unsafe(nil), T::Hash[String, Symbol])
1205
1199
  end
1206
1200
 
1207
1201
  class Parser
@@ -1349,25 +1343,28 @@ module PDF
1349
1343
  end
1350
1344
 
1351
1345
  class Reference
1352
- sig { returns(T.untyped) }
1346
+ sig { returns(Integer) }
1353
1347
  attr_reader :id
1354
1348
 
1355
- sig { returns(T.untyped) }
1349
+ sig { returns(Integer) }
1356
1350
  attr_reader :gen
1357
1351
 
1358
- sig { params(id: T.untyped, gen: T.untyped).void }
1359
- def initialize(id, gen); end
1352
+ sig { params(id: Integer, gen: Integer).void }
1353
+ def initialize(id, gen)
1354
+ @id = T.let(T.unsafe(nil), Integer)
1355
+ @gen = T.let(T.unsafe(nil), Integer)
1356
+ end
1360
1357
 
1361
- sig { returns(T.untyped) }
1358
+ sig { returns(T::Array[PDF::Reader::Reference]) }
1362
1359
  def to_a; end
1363
1360
 
1364
- sig { returns(T.untyped) }
1361
+ sig { returns(Integer) }
1365
1362
  def to_i; end
1366
1363
 
1367
- sig { params(obj: T.untyped).returns(T.untyped) }
1364
+ sig { params(obj: Object).returns(T::Boolean) }
1368
1365
  def ==(obj); end
1369
1366
 
1370
- sig { returns(T.untyped) }
1367
+ sig { returns(Integer) }
1371
1368
  def hash; end
1372
1369
  end
1373
1370
 
@@ -1501,54 +1498,68 @@ module PDF
1501
1498
 
1502
1499
  class SynchronizedCache
1503
1500
  sig { void }
1504
- def initialize; end
1501
+ def initialize
1502
+ @cache = T.let(T.unsafe(nil), T::Hash[Object, T.untyped])
1503
+ @mutex = T.let(T.unsafe(nil), Mutex)
1504
+ end
1505
1505
 
1506
- sig { params(key: T.untyped).returns(T.untyped) }
1506
+ sig { params(key: Object).returns(T.untyped) }
1507
1507
  def [](key); end
1508
1508
 
1509
- sig { params(key: T.untyped, value: T.untyped).returns(T.untyped) }
1509
+ sig { params(key: Object, value: T.nilable(Object)).returns(T.untyped) }
1510
1510
  def []=(key, value); end
1511
1511
  end
1512
1512
 
1513
1513
  class TextRun
1514
1514
  include Comparable
1515
1515
 
1516
- sig { returns(T.untyped) }
1517
- attr_reader :x
1518
-
1519
- sig { returns(T.untyped) }
1520
- attr_reader :y
1521
-
1522
- sig { returns(T.untyped) }
1516
+ sig { returns(Numeric) }
1523
1517
  attr_reader :width
1524
1518
 
1525
- sig { returns(T.untyped) }
1519
+ sig { returns(Numeric) }
1526
1520
  attr_reader :font_size
1527
1521
 
1528
- sig { returns(T.untyped) }
1522
+ sig { returns(String) }
1529
1523
  attr_reader :text
1530
1524
 
1525
+ sig { returns(PDF::Reader::Point) }
1526
+ attr_reader :origin
1527
+
1531
1528
  sig do
1532
1529
  params(
1533
- x: T.untyped,
1534
- y: T.untyped,
1535
- width: T.untyped,
1536
- font_size: T.untyped,
1537
- text: T.untyped
1530
+ x: Numeric,
1531
+ y: Numeric,
1532
+ width: Numeric,
1533
+ font_size: Numeric,
1534
+ text: String
1538
1535
  ).void
1539
1536
  end
1540
- def initialize(x, y, width, font_size, text); end
1537
+ def initialize(x, y, width, font_size, text)
1538
+ @origin = T.let(T.unsafe(nil), PDF::Reader::Point)
1539
+ @width = T.let(T.unsafe(nil), Numeric)
1540
+ @font_size = T.let(T.unsafe(nil), Numeric)
1541
+ @text = T.let(T.unsafe(nil), String)
1542
+ @endx = T.let(T.unsafe(nil), T.nilable(Numeric))
1543
+ @endy = T.let(T.unsafe(nil), T.nilable(Numeric))
1544
+ @mergable_range = T.let(T.unsafe(nil), T.nilable(T::Range[Numeric]))
1545
+ end
1541
1546
 
1542
1547
  sig { params(other: T.untyped).returns(T.untyped) }
1543
1548
  def <=>(other); end
1544
1549
 
1545
- sig { returns(T.untyped) }
1550
+ sig { returns(Numeric) }
1546
1551
  def endx; end
1547
1552
 
1548
- sig { returns(T.untyped) }
1553
+ sig { returns(Numeric) }
1549
1554
  def endy; end
1550
1555
 
1551
- sig { returns(T.untyped) }
1556
+ sig { returns(Numeric) }
1557
+ def x; end
1558
+
1559
+ sig { returns(Numeric) }
1560
+ def y; end
1561
+
1562
+ sig { returns(Numeric) }
1552
1563
  def mean_character_width; end
1553
1564
 
1554
1565
  sig { params(other: PDF::Reader::TextRun).returns(T::Boolean) }
@@ -1557,22 +1568,22 @@ module PDF
1557
1568
  sig { params(other: PDF::Reader::TextRun).returns(PDF::Reader::TextRun) }
1558
1569
  def +(other); end
1559
1570
 
1560
- sig { returns(T.untyped) }
1571
+ sig { returns(String) }
1561
1572
  def inspect; end
1562
1573
 
1563
- sig { params(other_run: T.untyped).returns(T.untyped) }
1574
+ sig { params(other_run: T.untyped).returns(T::Boolean) }
1564
1575
  def intersect?(other_run); end
1565
1576
 
1566
- sig { params(other_run: T.untyped).returns(T.untyped) }
1577
+ sig { params(other_run: T.untyped).returns(Numeric) }
1567
1578
  def intersection_area_percent(other_run); end
1568
1579
 
1569
- sig { returns(T.untyped) }
1580
+ sig { returns(Numeric) }
1570
1581
  def area; end
1571
1582
 
1572
- sig { returns(T.untyped) }
1583
+ sig { returns(T::Range[Numeric]) }
1573
1584
  def mergable_range; end
1574
1585
 
1575
- sig { returns(T.untyped) }
1586
+ sig { returns(Numeric) }
1576
1587
  def character_count; end
1577
1588
  end
1578
1589
 
@@ -1582,114 +1593,121 @@ module PDF
1582
1593
  end
1583
1594
 
1584
1595
  class TransformationMatrix
1585
- sig { returns(T.untyped) }
1596
+ sig { returns(Numeric) }
1586
1597
  attr_reader :a
1587
1598
 
1588
- sig { returns(T.untyped) }
1599
+ sig { returns(Numeric) }
1589
1600
  attr_reader :b
1590
1601
 
1591
- sig { returns(T.untyped) }
1602
+ sig { returns(Numeric) }
1592
1603
  attr_reader :c
1593
1604
 
1594
- sig { returns(T.untyped) }
1605
+ sig { returns(Numeric) }
1595
1606
  attr_reader :d
1596
1607
 
1597
- sig { returns(T.untyped) }
1608
+ sig { returns(Numeric) }
1598
1609
  attr_reader :e
1599
1610
 
1600
- sig { returns(T.untyped) }
1611
+ sig { returns(Numeric) }
1601
1612
  attr_reader :f
1602
1613
 
1603
1614
  sig do
1604
1615
  params(
1605
- a: T.untyped,
1606
- b: T.untyped,
1607
- c: T.untyped,
1608
- d: T.untyped,
1609
- e: T.untyped,
1610
- f: T.untyped
1616
+ a: Numeric,
1617
+ b: Numeric,
1618
+ c: Numeric,
1619
+ d: Numeric,
1620
+ e: Numeric,
1621
+ f: Numeric
1611
1622
  ).void
1612
1623
  end
1613
- def initialize(a, b, c, d, e, f); end
1624
+ def initialize(a, b, c, d, e, f)
1625
+ @a = T.let(T.unsafe(nil), Numeric)
1626
+ @b = T.let(T.unsafe(nil), Numeric)
1627
+ @c = T.let(T.unsafe(nil), Numeric)
1628
+ @d = T.let(T.unsafe(nil), Numeric)
1629
+ @e = T.let(T.unsafe(nil), Numeric)
1630
+ @f = T.let(T.unsafe(nil), Numeric)
1631
+ end
1614
1632
 
1615
- sig { returns(T.untyped) }
1633
+ sig { returns(String) }
1616
1634
  def inspect; end
1617
1635
 
1618
- sig { returns(T.untyped) }
1636
+ sig { returns(T::Array[Numeric]) }
1619
1637
  def to_a; end
1620
1638
 
1621
1639
  sig do
1622
1640
  params(
1623
- a: T.untyped,
1624
- b: T.untyped,
1625
- c: T.untyped,
1626
- d: T.untyped,
1627
- e: T.untyped,
1628
- f: T.untyped
1629
- ).returns(T.untyped)
1641
+ a: Numeric,
1642
+ b: Numeric,
1643
+ c: Numeric,
1644
+ d: Numeric,
1645
+ e: Numeric,
1646
+ f: Numeric
1647
+ ).returns(PDF::Reader::TransformationMatrix)
1630
1648
  end
1631
- def multiply!(a, b = nil, c = nil, d = nil, e = nil, f = nil); end
1649
+ def multiply!(a, b, c, d, e, f); end
1632
1650
 
1633
- sig { params(e2: T.untyped).returns(T.untyped) }
1651
+ sig { params(e2: Numeric).void }
1634
1652
  def horizontal_displacement_multiply!(e2); end
1635
1653
 
1636
1654
  sig do
1637
1655
  params(
1638
- a2: T.untyped,
1639
- b2: T.untyped,
1640
- c2: T.untyped,
1641
- d2: T.untyped,
1642
- e2: T.untyped,
1643
- f2: T.untyped
1644
- ).returns(T.untyped)
1656
+ a2: Numeric,
1657
+ b2: Numeric,
1658
+ c2: Numeric,
1659
+ d2: Numeric,
1660
+ e2: Numeric,
1661
+ f2: Numeric
1662
+ ).void
1645
1663
  end
1646
1664
  def horizontal_displacement_multiply_reversed!(a2, b2, c2, d2, e2, f2); end
1647
1665
 
1648
1666
  sig do
1649
1667
  params(
1650
- a2: T.untyped,
1651
- b2: T.untyped,
1652
- c2: T.untyped,
1653
- d2: T.untyped,
1654
- e2: T.untyped,
1655
- f2: T.untyped
1656
- ).returns(T.untyped)
1668
+ a2: Numeric,
1669
+ b2: Numeric,
1670
+ c2: Numeric,
1671
+ d2: Numeric,
1672
+ e2: Numeric,
1673
+ f2: Numeric
1674
+ ).void
1657
1675
  end
1658
1676
  def xy_scaling_multiply!(a2, b2, c2, d2, e2, f2); end
1659
1677
 
1660
1678
  sig do
1661
1679
  params(
1662
- a2: T.untyped,
1663
- b2: T.untyped,
1664
- c2: T.untyped,
1665
- d2: T.untyped,
1666
- e2: T.untyped,
1667
- f2: T.untyped
1668
- ).returns(T.untyped)
1680
+ a2: Numeric,
1681
+ b2: Numeric,
1682
+ c2: Numeric,
1683
+ d2: Numeric,
1684
+ e2: Numeric,
1685
+ f2: Numeric
1686
+ ).void
1669
1687
  end
1670
1688
  def xy_scaling_multiply_reversed!(a2, b2, c2, d2, e2, f2); end
1671
1689
 
1672
1690
  sig do
1673
1691
  params(
1674
- a2: T.untyped,
1675
- b2: T.untyped,
1676
- c2: T.untyped,
1677
- d2: T.untyped,
1678
- e2: T.untyped,
1679
- f2: T.untyped
1680
- ).returns(T.untyped)
1692
+ a2: Numeric,
1693
+ b2: Numeric,
1694
+ c2: Numeric,
1695
+ d2: Numeric,
1696
+ e2: Numeric,
1697
+ f2: Numeric
1698
+ ).void
1681
1699
  end
1682
1700
  def regular_multiply!(a2, b2, c2, d2, e2, f2); end
1683
1701
 
1684
1702
  sig do
1685
1703
  params(
1686
- a2: T.untyped,
1687
- b2: T.untyped,
1688
- c2: T.untyped,
1689
- d2: T.untyped,
1690
- e2: T.untyped,
1691
- f2: T.untyped
1692
- ).returns(T.untyped)
1704
+ a2: Numeric,
1705
+ b2: Numeric,
1706
+ c2: Numeric,
1707
+ d2: Numeric,
1708
+ e2: Numeric,
1709
+ f2: Numeric
1710
+ ).void
1693
1711
  end
1694
1712
  def faster_multiply!(a2, b2, c2, d2, e2, f2); end
1695
1713
  end
@@ -1819,12 +1837,18 @@ module PDF
1819
1837
 
1820
1838
  class XRef
1821
1839
  include Enumerable
1840
+ extend T::Generic # Provides `type_member` helper
1822
1841
 
1823
- sig { returns(T.untyped) }
1842
+ sig { returns(T::Hash[Symbol, T.untyped]) }
1824
1843
  attr_reader :trailer
1825
1844
 
1826
- sig { params(io: T.untyped).void }
1827
- def initialize(io); end
1845
+ sig { params(io: T.any(IO, Tempfile, StringIO)).void }
1846
+ def initialize(io)
1847
+ @io = T.let(T.unsafe(nil), T.any(IO, Tempfile, StringIO))
1848
+ @junk_offset = T.let(T.unsafe(nil), Integer)
1849
+ @xref = T.let(T.unsafe(nil), T::Hash[Integer, T::Hash[Integer, Integer]])
1850
+ @trailer = T.let(T.unsafe(nil), T::Hash[Symbol, T.untyped])
1851
+ end
1828
1852
 
1829
1853
  sig { returns(T.untyped) }
1830
1854
  def size; end
@@ -1888,7 +1912,9 @@ module PDF
1888
1912
 
1889
1913
  class Depredict
1890
1914
  sig { params(options: T::Hash[T.untyped, T.untyped]).void }
1891
- def initialize(options = {}); end
1915
+ def initialize(options = {})
1916
+ @options = T.let(T.unsafe(nil), T::Hash[T.untyped, T.untyped])
1917
+ end
1892
1918
 
1893
1919
  sig { params(data: String).returns(String) }
1894
1920
  def filter(data); end
@@ -1949,17 +1975,14 @@ module PDF
1949
1975
 
1950
1976
  module WidthCalculator
1951
1977
  class BuiltIn
1952
- BUILTINS = [
1953
- :Courier, :"Courier-Bold", :"Courier-BoldOblique", :"Courier-Oblique",
1954
- :Helvetica, :"Helvetica-Bold", :"Helvetica-BoldOblique", :"Helvetica-Oblique",
1955
- :Symbol,
1956
- :"Times-Roman", :"Times-Bold", :"Times-BoldItalic", :"Times-Italic",
1957
- :ZapfDingbats
1958
- ]
1978
+ BUILTINS = T.let(T.unsafe(nil), T::Array[Symbol])
1979
+
1980
+ @@all_metrics = T.let(T.unsafe(nil), T.nilable(PDF::Reader::SynchronizedCache))
1959
1981
 
1960
1982
  sig { params(font: PDF::Reader::Font).void }
1961
1983
  def initialize(font)
1962
1984
  @font = T.let(T.unsafe(nil), PDF::Reader::Font)
1985
+ @metrics = T.let(T.unsafe(nil), AFM::Font)
1963
1986
  end
1964
1987
 
1965
1988
  sig { params(code_point: T.nilable(Integer)).returns(Numeric) }