class Poppler::Document

Public Class Methods

new(*args) click to toggle source
# File lib/poppler/document.rb, line 24
def initialize(*args)
  if args.size == 1 and args[0].is_a?(Hash)
    options = args[0]
  else
    uri_or_data, password = args
    if pdf_data?(uri_or_data)
      options = {
        :data => uri_or_data,
        :password => password
      }
    else
      options = {
        :uri => ensure_uri(uri_or_data),
        :password => password
      }
    end
  end

  data = options[:data]
  uri = options[:uri]
  path = options[:path]
  stream = options[:stream]
  length = options[:length]
  file = options[:file]
  password = options[:password]

  if data
    if respond_to?(:initialize_new_from_bytes)
      initialize_new_from_bytes(data, password)
    else
      @file = Tempfile.new(["poppler", ".pdf"])
      @file.binmode
      @file.write(data)
      @file.close
      initialize_new_from_file(ensure_uri(@file.path), password)
    end
  elsif uri
    initialize_new_from_file(uri, password)
  elsif path
    uri = ensure_uri(path)
    initialize_new_from_file(uri, password)
  elsif stream
    if length.nil?
      raise(ArgumentError,
            "must specify :length for :stream: #{options.inspect}")
    end
    initialize_new_from_stream(stream, length, password)
  elsif file
    case file
    when String, Pathname
      initialize(path: file, password: password)
    else
      initialize_new_from_gfile(file, password)
    end
  else
    message =
      "must specify one of :data, :uri, :path, :stream or :file: " +
      options.inspect
    raise(ArgumentError, message)
  end
end
Also aliased as: initialize_raw

Public Instance Methods

each() { |get_page(i)| ... } click to toggle source
# File lib/poppler/document.rb, line 88
def each
  return to_enum(__method__) unless block_given?

  n_pages.times do |i|
    yield get_page(i)
  end
end
index_iter() click to toggle source
# File lib/poppler/document.rb, line 106
def index_iter
  IndexIter.new(self)
end
initialize_raw(*args)
Alias for: new
save(uri) click to toggle source
# File lib/poppler/document.rb, line 97
def save(uri)
  save_raw(ensure_uri(uri))
end
Also aliased as: save_raw
save_a_copy(uri) click to toggle source
# File lib/poppler/document.rb, line 102
def save_a_copy(uri)
  save_a_copy_raw(ensure_uri(uri))
end
Also aliased as: save_a_copy_raw
save_a_copy_raw(uri)
Alias for: save_a_copy
save_raw(uri)
Alias for: save

Private Instance Methods

ensure_uri(uri) click to toggle source
# File lib/poppler/document.rb, line 119
def ensure_uri(uri)
  uri = uri.to_path if uri.respond_to?(:to_path)
  if GLib.path_is_absolute?(uri)
    GLib.filename_to_uri(uri)
  elsif /\A[a-zA-Z][a-zA-Z\d\-+.]*:/.match(uri)
    uri
  else
    GLib.filename_to_uri(File.expand_path(uri))
  end
end
pdf_data?(data) click to toggle source
# File lib/poppler/document.rb, line 115
def pdf_data?(data)
  data.start_with?("%PDF-1.")
end