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
    # Workaround: poppler_document_new_from_data()'s .gir
    # accepts PDF data as UTF-8 string. PDF data is not UTF-8
    # string. So UTF-8 validation is failed.
    #
    # TODO: Enable the following:
    # initialize_new_from_data(data, password)

    @file = Tempfile.new(["poppler", ".pdf"])
    @file.binmode
    @file.write(data)
    @file.close
    initialize_new_from_file(ensure_uri(@file.path), password)
  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 91
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 109
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 100
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 105
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 122
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 118
def pdf_data?(data)
  data.start_with?("%PDF-1.")
end