Module: RGhost::Config

Defined in:
lib/rghost/ruby_ghost_config.rb

Overview

Rghost setup with Ghostscript. Ghostscript runs on a variety of platforms, this is why we recommend the non coupled install for non *nix environments. The gem already comes with a set of defaults but you can change the settings using the Hash RGhost::Config::GS before each use of the API. Listed below are the keys of the said hash.

RGhost::Config::GS

Operating mode

  • :gsparams In this mode RGhost just pass parameters to the Ghostscript framework.

  • :gsapi based on the exchange of data between Ruby and Ghostscript via rgengine.so using gslib.so.8 or gslib-esp.so.8.

RGhost::Config::GS

Path to the ghostscript executable.

Example on windows

RGhost::Config::GS = “C:\gs\bin\gswin32c.exe”

Example on Linux

RGhost::Config::GS = “/usr/bin/gs”

RGhost::Config::GS

Temporary directory

Example

RGhost::Config::GS = “/tmp”

RGhost::Config::GS

Allows you to add/remove options. (use with caution!)

Example

RGhost::Config::GS << “-dSAFER”

RGhost::Config::GS

Defines the maximum number of elements for each matrix inside postscript’s internal stack, avoiding a stack overflow error..

Example

RGhost::Config::GS=5000

RGhost::Config::GS

Set the measure units. See Units::Unit for available units.

Example

RGhost::Config::GS=Units::Cm

RGhost::Config::GS

Ruby to PS character conversion proxy. Necessary when the source code isn’t on the same encoding of the document. Params is a block that returns a String. The default setting is nil.

Example

RGhost::Config::GS= lambda {|text| Iconv::iconv(“latin1”,“utf8”, text).to_s}

RGhost::Config::GS

Sets the Postscript font encoding. Default: :IsoLatin

Example

RGhost::Config::GS= :IsoLatin

Constant Summary collapse

DEFAULT_PORTRAIT_TEMPLATE =
File.join(File.dirname(__FILE__),"ps","rghost_default_template.eps")
GS =
{
  :mode => :gsparams,
  :plugin => nil,
  :path => nil,
  :tmpdir => ENV["TMP"] || ENV["TMPDIR"] || ENV["TEMPDIR"] || ENV["TEMP"] || "/tmp",
  :pslibdir => File.join( File.dirname(__FILE__),"ps"),
  :extensions => [],
  :preload => [],
  :default_params=> %w(gs -dNOPAUSE -dBATCH -dQUIET -dNOPAGEPROMPT),
  :stack_elements => 5000,
  :font_encoding => :IsoLatin,
  :charset_convert => lambda {|text| Iconv::iconv('latin1','utf-8', text).join },
 #:charset_convert => nil,
  :fontsize => 8,
  :unit => RGhost::Units::Cm
}
FONTMAP =

.

Preseted tags

FONTMAP=RGhost::FontMap.new :name => “Helvetica”, :size => 8, :encoding => false do

  new :span
  new :b,     :name => "Helvetica-Bold"
  new :bold,     :name => "Helvetica-Bold"
  new :normal,   :name => "Helvetica"
  new :i,     :name => "Helvetica-Oblique", :size => 8
  new :bi,    :name => "Helvetica-BoldOblique"
  new :big,   :size => 10
  new :small, :size => 7
  new :h1,    :name => "Helvetica", :size => 14
  new :h2,    :name => "Helvetica", :size => 13
  new :h3,    :name => "Helvetica", :size => 12
  new :h4,    :name => "Helvetica", :size => 11
  new :h5,    :name => "Helvetica", :size => 10
  new :title, :name => "Helvetica", :size => 20
  new :pre,   :name => "Courier"
end
RGhost::FontMap.new :name => "Helvetica", :size => 8, :encoding => true do
  new :span
  new :b,     :name => "Helvetica-Bold"
  new :bold,     :name => "Helvetica-Bold"
  new :normal,   :name => "Helvetica"
  new :i,     :name => "Helvetica-Oblique", :size => 8
  new :bi,    :name => "Helvetica-BoldOblique"
  new :big,   :size => 10
  new :small, :size => 7
  new :h1,    :name => "Helvetica", :size => 14
  new :h2,    :name => "Helvetica", :size => 13
  new :h3,    :name => "Helvetica", :size => 12
  new :h4,    :name => "Helvetica", :size => 11
  new :h5,    :name => "Helvetica", :size => 10
  new :title, :name => "Helvetica", :size => 20
  new :pre,   :name => "Courier"
end

Class Method Summary collapse

Class Method Details

.config_platformObject

:nodoc:



77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/rghost/ruby_ghost_config.rb', line 77

def self.config_platform #:nodoc:
  
  const= 'PLATFORM'
  const = "RUBY_"+const if RUBY_VERSION =~ /^1.9/  
  GS[:path]=case Object.const_get(const)
  when /linux/ then "/usr/bin/gs"
  when /darwin/ then "/opt/local/bin/gs"
  when /freebsd|bsd/ then "/usr/local/bin/gs"
  when /mswin/ then "C:\\gs\\bin\\gswin32\\gswin32c.exe"
  end
  not_found_msg="\nGhostscript not found in your environment.\nInstall it and set the variable RGhost::Config::GS[:path] with the executable.\nExample: RGhost::Config::GS[:path]='/path/to/my/gs' #unix-style\n RGhost::Config::GS[:path]=\"C:\\\\gs\\\\bin\\\\gswin32c.exe\"  #windows-style\n"
  raise not_found_msg unless (File.exists? GS[:path])
end

.encode_test(value) ⇒ Object

This method is a helper to gets the best encoding.

You can generate this page with the code. RGhost::Config.encode_teste(“Fiancé”).render :pdf, :filename => “/tmp/mytest.pdf”

The encode will use on Document class. doc=Document.new :font_encoding => ‘IsoLatin’



129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/rghost/ruby_ghost_config.rb', line 129

def self.encode_test(value)
  d=RGhost::Document.new  :paper => :A4, :margin_left => 2 #, :landscape => true
  d.before_page_create do |b|
    b.image RGhost::Config::DEFAULT_PORTRAIT_TEMPLATE
  end
  exp=File.join(File.dirname(__FILE__),"ps","*.enc")
  d.show "String (Using Helvetica Font)", :with => :b
  d.moveto :x => 16
  d.show "Encode Name", :with => :b
  d.horizontal_line :bottom
  d.next_row
  
  Dir.glob(exp).sort.each do |f|
    name=File.basename(f)
    name.gsub!(/\.enc/,'')
    d.set RGhost::Load.library(name,:enc)
    d.set RGhost::Variable.new(:default_encoding,name)
    d.set RGhost::FontMap.new {
      new(:font_test,  :name => "Helvetica",:size => 8,:color => "#FF0000", :encoding => true)
    }
    
    d.show "#{value}" , :with => :font_test
    d.moveto :x => 16
    d.show "#{name}", :with =>  :i
    d.next_row
    
  end
  d
end

.environment_fonts(text = "The quick brown fox jumps over the lazy dog") ⇒ Object

Generates font catalog to use into method define_tags on Document

RGhost::Config.enviroment_fonts.render :pdf, :filename => "mycatalog.pdf"



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/rghost/ruby_ghost_config.rb', line 162

def self.environment_fonts(text="The quick brown fox jumps over the lazy dog")
  
  d=RGhost::Document.new  :margin_left => 2.3, :margin_bottom => 2.3
  d.before_page_create do |b|
    b.image RGhost::Config::DEFAULT_PORTRAIT_TEMPLATE
  end
  d.show "Search Path"
  d.horizontal_line :bottom
  d.next_row
  d.raw :default_font
  d.raw %Q{
  LIBPATH{
    limit_left  current_row  moveto   show    
    nrdp
  } forall
  
  }
  d.next_row
  d.show "Example"
  d.moveto :x=> 13
  d.show "Font Name"
  d.horizontal_line :bottom
  d.next_row
  #=begin    
  d.raw %Q{
    Fontmap{ 
      50 string cvs pop dup findfont 10 scalefont setfont
      limit_left  current_row  moveto  (#{text})  show    
  13 cm  current_row moveto default_font  0 setgray
  50 string cvs show
  nrdp  
    } forall
  }
  #=end    
  d.done
  d
end

.is_ok?Boolean

Test if your environment is ready to works. If yes the page below will show.

You can generate this page with the code. RGhost::Config.is_ok?.render :pdf, :filename => “/tmp/mytest.pdf”

Returns:

  • (Boolean)


97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/rghost/ruby_ghost_config.rb', line 97

def self.is_ok?
  d=RGhost::Document.new  :margin_left => 2.3, :margin_bottom => 2.3
  d.benchmark(:start)
  d.before_page_create do |b|
    b.image RGhost::Config::DEFAULT_PORTRAIT_TEMPLATE
  end
  d.define_tags do
    new :bigger,   :size => 150, :color => "#AAFF33"
  end
  d.text_in :x => 6, :y=> 15, :write => "Yes!", :with => :bigger
  d.text_in :x => 10, :y=> 14, :write => "Your environment is ready!"
  d.text_in :x => 10, :y=> 13, :write => "RGhost Version " + RGhost::VERSION::STRING
  d.text_in :x => 10, :y=> 12, :write => "Created at " + Time.at(RGhost::VERSION::DATE).to_s
  d.text_in :x => 10, :y=> 11, :write => "Now " + Time.now.to_s
  
  d.benchmark(:stop)
  d.done
  d
  
  
  
end