class Poppler::Document
Public Class Methods
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
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
Source
# File lib/poppler/document.rb, line 106 def index_iter IndexIter.new(self) end
Source
# File lib/poppler/document.rb, line 97 def save(uri) save_raw(ensure_uri(uri)) end
Also aliased as: save_raw
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
Private Instance Methods
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
Source
# File lib/poppler/document.rb, line 115 def pdf_data?(data) data.start_with?("%PDF-1.") end