Class: Asciidoctor::PDF::Optimizer::RGhost
- Defined in:
- lib/asciidoctor/pdf/optimizer/rghost.rb
Constant Summary collapse
- DEFAULT_PARAMS =
%w(gs -dNOPAUSE -dBATCH -dQUIET -dNOPAGEPROMPT)
Instance Attribute Summary
Attributes included from Asciidoctor::PDF::Optimizer
#compatibility_level, #compliance, #quality
Instance Method Summary collapse
-
#initialize(*_args) ⇒ RGhost
constructor
A new instance of RGhost.
- #optimize_file(target) ⇒ Object
Methods included from Factory
Constructor Details
#initialize(*_args) ⇒ RGhost
Returns a new instance of RGhost.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/asciidoctor/pdf/optimizer/rghost.rb', line 51 def initialize *_args super if @quality&.include? ':' @quality, @color_mode = @quality.split ':', 2 else @color_mode = nil end if (gs_path = ::ENV['GS']) ::RGhost::Config::GS[:path] = gs_path end @newpdf = false default_params = DEFAULT_PARAMS.drop 0 if (user_params = ::ENV['GS_OPTIONS']) (default_params += user_params.split).uniq! @newpdf = nil if default_params.find {|it| it.start_with? '-dNEWPDF=' } end ::RGhost::Config::GS[:default_params] = default_params end |
Instance Method Details
#optimize_file(target) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/asciidoctor/pdf/optimizer/rghost.rb', line 70 def optimize_file target ::Dir::Tmpname.create ['asciidoctor-pdf-', '.pdf'] do |tmpfile| filename_o = ::Pathname.new target filename_tmp = ::Pathname.new tmpfile if (pdfmark = filename_o.sub_ext '.pdfmark').file? inputs = [target, pdfmark.to_s].join ::File::PATH_SEPARATOR else inputs = target end d = { Printed: false, CannotEmbedFontPolicy: '/Warning', CompatibilityLevel: @compatibility_level } d[:NEWPDF] = @newpdf unless @newpdf.nil? case @compliance when 'PDF/A', 'PDF/A-1', 'PDF/A-2', 'PDF/A-3' d[:PDFA] = ((@compliance.split '-', 2)[1] || 1).to_i d[:ShowAnnots] = false when 'PDF/X', 'PDF/X-1', 'PDF/X-3' d[:PDFX] = true d[:ShowAnnots] = false end case @color_mode when 'gray', 'grayscale' s = { ColorConversionStrategy: 'Gray' } when 'bw' d[:BlackText] = true s = { ColorConversionStrategy: 'Gray' } end (::RGhost::Convert.new inputs).to :pdf, filename: filename_tmp.to_s, quality: QUALITY_NAMES[@quality], d: d, s: s filename_o.binwrite filename_tmp.binread end nil end |