Module: Pdfrb::Content::SmartTextExtractor

Defined in:
lib/pdfrb/content/smart_text_extractor.rb

Class Method Summary collapse

Class Method Details

.extract(document) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/pdfrb/content/smart_text_extractor.rb', line 8

def extract(document)
  results = []
  document.pages.each do |page|
    text = extract_page_text(document, page)
    results << { page: page, text: text }
  end

  block_given? ? yield(results) : results
end

.extract_page_text(document, page) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/pdfrb/content/smart_text_extractor.rb', line 18

def extract_page_text(document, page)
  contents = page.value[:Contents]
  return "" unless contents

  ref = contents.is_a?(Pdfrb::Model::Reference) ? contents : nil
  return "" unless ref

  stream = document.object(ref)
  return "" unless stream.is_a?(Pdfrb::Model::Cos::Stream)

  data = stream.decoded_stream
  return "" unless data && !data.empty?

  collector = TextCollector.new(document, page)
  begin
    collector.process(data)
  rescue StandardError
    # Best effort extraction
  end
  collector.text
end