Class: Libis::Format::Converter::PdfOptimizer

Inherits:
Base
  • Object
show all
Defined in:
lib/libis/format/converter/pdf_optimizer.rb

Instance Attribute Summary

Attributes inherited from Base

#flags, #options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

category, #check_file_exist, inherited, #initialize, #using_temp, using_temp

Constructor Details

This class inherits a constructor from Libis::Format::Converter::Base

Class Method Details

.input_typesObject



13
14
15
# File 'lib/libis/format/converter/pdf_optimizer.rb', line 13

def self.input_types
  [:PDF]
end

.output_types(format = nil) ⇒ Object



17
18
19
20
# File 'lib/libis/format/converter/pdf_optimizer.rb', line 17

def self.output_types(format = nil)
  return [] unless input_types.include?(format) if format
  [:PDF]
end

Instance Method Details

#convert(source, target, format, opts = {}) ⇒ Object



44
45
46
47
48
49
# File 'lib/libis/format/converter/pdf_optimizer.rb', line 44

def convert(source, target, format, opts = {})
  super

   optimize_pdf(source, target, @quality || 'ebook')

end

#optimize_pdf(source, target, quality) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/libis/format/converter/pdf_optimizer.rb', line 51

def optimize_pdf(source, target, quality)

  using_temp(target) do |tmpname|
    result = Libis::Format::Tool::PdfOptimizer.run(source, tmpname, quality)
    unless result[:status] == 0
      error("Pdf optimization encountered errors:\n%s", (result[:err] + result[:out]).join("\n"))
      next nil
    end
    tmpname
  end
end

#pdf_optimize(_) ⇒ Object



22
23
24
# File 'lib/libis/format/converter/pdf_optimizer.rb', line 22

def pdf_optimize(_)
  #force usage of this converter
end

#quality(setting = 1) ⇒ Object

Optimize the PDF

This reduces the graphics quality to a level in order to limit file size. This option relies on the presence of ghostscript and takes one argument: the quality level. It should be one of:

  • 0 : lowest quality (Acrobat Distiller ‘Screen Optimized’ equivalent)

  • 1 : medium quality (Acrobat Distiller ‘eBook’ equivalent)

  • 2 : good quality

  • 3 : high quality (Acrobat Distiller ‘Print Optimized’ equivalent)

  • 4 : highest quality (Acrobat Distiller ‘Prepress Optimized’ equivalent)

Note that the optimization is intended to be used with PDF’s containing high-resolution images.

Parameters:

  • setting (Integer) (defaults to: 1)

    quality setting. [0-4]



40
41
42
# File 'lib/libis/format/converter/pdf_optimizer.rb', line 40

def quality(setting = 1)
  @quality = %w(screen ebook default printer prepress)[setting] if (0..4) === setting
end