Sha256: 16b8113ec0457b9f2cfd7e48ec02665531914ea02787e3e8d431290ed35dbb27
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
require 'tmpdir' require 'pdftoimage/version' require 'pdftoimage/image' module PDFToImage class PDFError < RuntimeError; end end module PDFToImage # A class variable for storing the location of our temp folder @@pdf_temp_dir = File.join(Dir.tmpdir()) begin tmp = `pdftoppm -v 2>&1` raise(PDFToImage::PDFError, "poppler_utils not installed") unless tmp.index('Poppler') rescue Errno::ENOENT raise PDFToImage::PDFError, "poppler_utils not installed" end begin tmp = `identify -version 2>&1` raise(PDFToImage::PDFError, "ImageMagick not installed") unless tmp.index('ImageMagick') rescue Errno::ENOENT raise PDFToImage::PDFError, "ImageMagick not installed" end class << self # Opens a PDF document and prepares it for splitting into images. # # @param [filename] The filename of the PDF to open # @return [Array] An array of images def open(filename) target_path = random_filename if not File.exists?(filename) raise PDFError, "File '#{filename}' not found." end cmd = "pdftoppm -png #{filename} #{target_path}" `#{cmd}` if $? != 0 raise PDFError, "Error reading PDF." end pngs = Dir.glob("#{target_path}*.png") images = [] pngs.each do |png| image = Image.new(png) images << image end return images.sort! end private # Generate a random file name in the system's tmp folder def random_filename File.join(@@pdf_temp_dir, random_name) end # Generate a random name of {#length} characters. def random_name(length = 15) @@chars ||= ("a".."z").to_a + ("A".."Z").to_a + ("1".."9").to_a return 'pdftoimage-' + Array.new(length, '').collect{@@chars[rand(@@chars.size)]}.join end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pdftoimage-0.1.1 | lib/pdftoimage.rb |