rghost-ruby1.9-beta 0.8.7.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rghost.rb +18 -0
- data/lib/rghost/border.rb +44 -0
- data/lib/rghost/callback.rb +58 -0
- data/lib/rghost/circle.rb +102 -0
- data/lib/rghost/color.rb +175 -0
- data/lib/rghost/constants.rb +626 -0
- data/lib/rghost/convert.rb +43 -0
- data/lib/rghost/cursor.rb +124 -0
- data/lib/rghost/dash.rb +59 -0
- data/lib/rghost/document.rb +546 -0
- data/lib/rghost/document_callback_facade.rb +64 -0
- data/lib/rghost/dsc_entry.rb +20 -0
- data/lib/rghost/dynamic_document_callback.rb +15 -0
- data/lib/rghost/eps.rb +31 -0
- data/lib/rghost/font.rb +48 -0
- data/lib/rghost/font_map.rb +54 -0
- data/lib/rghost/frame.rb +105 -0
- data/lib/rghost/function.rb +38 -0
- data/lib/rghost/gif.rb +41 -0
- data/lib/rghost/graphic.rb +26 -0
- data/lib/rghost/grid/base_grid.rb +228 -0
- data/lib/rghost/grid/callback_facade.rb +136 -0
- data/lib/rghost/grid/csv_grid.rb +51 -0
- data/lib/rghost/grid/dynamic_callback.rb +12 -0
- data/lib/rghost/grid/field_format.rb +43 -0
- data/lib/rghost/grid/grid.rb +15 -0
- data/lib/rghost/grid/header.rb +120 -0
- data/lib/rghost/grid/matrix.rb +10 -0
- data/lib/rghost/grid/rails_grid.rb +74 -0
- data/lib/rghost/grid/static_callback.rb +13 -0
- data/lib/rghost/grid/style/border_lines.rb +44 -0
- data/lib/rghost/grid/style/bottom_lines.rb +28 -0
- data/lib/rghost/grid/style/old_forms.rb +28 -0
- data/lib/rghost/grid/style/style.rb +8 -0
- data/lib/rghost/gs_alone.rb +25 -0
- data/lib/rghost/helpers.rb +13 -0
- data/lib/rghost/horizontal_line.rb +45 -0
- data/lib/rghost/how_to.rb +75 -0
- data/lib/rghost/image.rb +26 -0
- data/lib/rghost/jpeg.rb +39 -0
- data/lib/rghost/line.rb +89 -0
- data/lib/rghost/line_width.rb +28 -0
- data/lib/rghost/load.rb +43 -0
- data/lib/rghost/newpath.rb +19 -0
- data/lib/rghost/paper.rb +147 -0
- data/lib/rghost/parse_text.rb +53 -0
- data/lib/rghost/pdf_security.rb +36 -0
- data/lib/rghost/point.rb +23 -0
- data/lib/rghost/point_with_command.rb +17 -0
- data/lib/rghost/polygon.rb +75 -0
- data/lib/rghost/ps/AdobeExpert.enc +258 -0
- data/lib/rghost/ps/AdobeLatinEncoding.enc +258 -0
- data/lib/rghost/ps/Bengali.enc +386 -0
- data/lib/rghost/ps/CodePage1250.enc +258 -0
- data/lib/rghost/ps/CodePage1251.enc +258 -0
- data/lib/rghost/ps/CodePage1252.enc +258 -0
- data/lib/rghost/ps/CodePage1253.enc +258 -0
- data/lib/rghost/ps/CodePage1254.enc +258 -0
- data/lib/rghost/ps/CodePage1256.enc +258 -0
- data/lib/rghost/ps/CodePage1257.enc +258 -0
- data/lib/rghost/ps/CodePage1258.enc +258 -0
- data/lib/rghost/ps/CodePage874.enc +258 -0
- data/lib/rghost/ps/Fontmap +5 -0
- data/lib/rghost/ps/IsoLatin.enc +352 -0
- data/lib/rghost/ps/MacCentralEuropean.enc +258 -0
- data/lib/rghost/ps/MacCyrillice.desnc +258 -0
- data/lib/rghost/ps/MacGreek.enc +258 -0
- data/lib/rghost/ps/MacHebrew.enc +258 -0
- data/lib/rghost/ps/TeX-CorkEncoding.enc +258 -0
- data/lib/rghost/ps/TeX-LGR-Greek.enc +258 -0
- data/lib/rghost/ps/TeX-T2AModified2Encoding.enc +258 -0
- data/lib/rghost/ps/TeX-T2BAdobeEncoding.enc +258 -0
- data/lib/rghost/ps/TeX-T2CAdobeEncoding.enc +258 -0
- data/lib/rghost/ps/TeX-X2AdobeEncoding.enc +258 -0
- data/lib/rghost/ps/TeX-XL2encoding.enc +258 -0
- data/lib/rghost/ps/TeXMathExtensionEncoding.enc +258 -0
- data/lib/rghost/ps/TeXMathItalicEncoding.enc +258 -0
- data/lib/rghost/ps/TeXMathSymbolEncoding.enc +258 -0
- data/lib/rghost/ps/US-ASCII.enc +258 -0
- data/lib/rghost/ps/UTF-8.enc +3 -0
- data/lib/rghost/ps/_cusor.ps +46 -0
- data/lib/rghost/ps/basic.ps +25 -0
- data/lib/rghost/ps/begin_document.ps +8 -0
- data/lib/rghost/ps/callbacks.ps +175 -0
- data/lib/rghost/ps/code128.font +344 -0
- data/lib/rghost/ps/code39.font +195 -0
- data/lib/rghost/ps/cursor.ps +106 -0
- data/lib/rghost/ps/datagrid.ps +55 -0
- data/lib/rghost/ps/developer.ps +237 -0
- data/lib/rghost/ps/ean.font +150 -0
- data/lib/rghost/ps/eps.ps +42 -0
- data/lib/rghost/ps/font.ps +38 -0
- data/lib/rghost/ps/frame.ps +16 -0
- data/lib/rghost/ps/gif.ps +150 -0
- data/lib/rghost/ps/horizontal_line.ps +4 -0
- data/lib/rghost/ps/i25.font +103 -0
- data/lib/rghost/ps/jpeg.ps +122 -0
- data/lib/rghost/ps/link.ps +22 -0
- data/lib/rghost/ps/paper.ps +8 -0
- data/lib/rghost/ps/rect_link.ps +17 -0
- data/lib/rghost/ps/rectangle.ps +5 -0
- data/lib/rghost/ps/rghost_default_template.eps +1532 -0
- data/lib/rghost/ps/row.ps +4 -0
- data/lib/rghost/ps/show.ps +21 -0
- data/lib/rghost/ps/table_callbacks.ps +96 -0
- data/lib/rghost/ps/text.ps +63 -0
- data/lib/rghost/ps/textarea.ps +11 -0
- data/lib/rghost/ps/type.ps +1 -0
- data/lib/rghost/ps/unit.ps +3 -0
- data/lib/rghost/ps/vertical_line.ps +12 -0
- data/lib/rghost/ps/virtual_pages.ps +55 -0
- data/lib/rghost/ps_facade.rb +253 -0
- data/lib/rghost/ps_object.rb +55 -0
- data/lib/rghost/rectangle_link.rb +65 -0
- data/lib/rghost/rgengine.so +0 -0
- data/lib/rghost/ruby_ghost_config.rb +243 -0
- data/lib/rghost/ruby_ghost_engine.rb +156 -0
- data/lib/rghost/ruby_ghost_version.rb +8 -0
- data/lib/rghost/ruby_to_ps.rb +78 -0
- data/lib/rghost/scale.rb +29 -0
- data/lib/rghost/shape_content.rb +23 -0
- data/lib/rghost/show.rb +88 -0
- data/lib/rghost/static_document_callback.rb +18 -0
- data/lib/rghost/text.rb +44 -0
- data/lib/rghost/text_in.rb +51 -0
- data/lib/rghost/text_link_in.rb +42 -0
- data/lib/rghost/textarea.rb +88 -0
- data/lib/rghost/units.rb +82 -0
- data/lib/rghost/variable.rb +12 -0
- data/lib/rghost/vertical_line.rb +37 -0
- data/lib/rghost/virtual_pages.rb +42 -0
- metadata +185 -0
data/lib/rghost/image.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
#Super class of GIF and JPEG.
|
3
|
+
class RGhost::Image < RGhost::PsObject
|
4
|
+
DEFAULT_OPTIONS={:x=> :limit_left, :y=> 1, :zoom => 100, :rotate => 0}
|
5
|
+
|
6
|
+
def initialize(image_path,options={})
|
7
|
+
super("")
|
8
|
+
@options=DEFAULT_OPTIONS.dup.merge(options)
|
9
|
+
@file=image_path
|
10
|
+
end
|
11
|
+
|
12
|
+
#Facade method for load image by file extension. Uses Eps, Gif and Jpeg class. Accepts gif, jpeg, jpg and eps
|
13
|
+
def self.for(path,options={})
|
14
|
+
|
15
|
+
clazz=case path
|
16
|
+
when /gif$/i then RGhost::Gif
|
17
|
+
when /jpe?g$/i then RGhost::Jpeg
|
18
|
+
when /(eps|template)$/i then RGhost::Eps
|
19
|
+
else raise NameError.new("Unsupported format")
|
20
|
+
end
|
21
|
+
|
22
|
+
clazz.new(path,options)
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
end
|
data/lib/rghost/jpeg.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
require "rghost/graphic"
|
3
|
+
require "rghost/cursor"
|
4
|
+
require "rghost/variable"
|
5
|
+
require "rghost/image"
|
6
|
+
#Loads JPEG image from file
|
7
|
+
#===Examples
|
8
|
+
# doc=Document.new
|
9
|
+
# doc.set Jpeg.new "../public/images/button.jpg", :x => 10, :y => 3
|
10
|
+
#Using Image.for facade
|
11
|
+
# doc.set Image.for "../public/images/button.jpg", :x => 10, :y => 3
|
12
|
+
#Using PsFacade or Document
|
13
|
+
# doc.image "images/button.jpg", :x => 10, :y => 3
|
14
|
+
#Using Zoom of the 200 percent
|
15
|
+
# doc.image "images/button.jpg", :zoom => 200
|
16
|
+
#===Options
|
17
|
+
#
|
18
|
+
#* <tt>:x and :y</tt> - Coordinates to position.
|
19
|
+
#* <tt>:rotate</tt> - Angle to image rotation if there is one.
|
20
|
+
#* <tt>:zoom</tt> - Resize proportionally the image
|
21
|
+
class RGhost::Jpeg < RGhost::Image
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
def ps
|
26
|
+
#x=Units::parse( @options[:x] )
|
27
|
+
#y=Units::parse( @options[:y] )
|
28
|
+
|
29
|
+
g=RGhost::Graphic.new
|
30
|
+
g.set RGhost::Cursor.translate(@options)
|
31
|
+
#set Cursor.translate()
|
32
|
+
g.set RGhost::Cursor.rotate(@options[:rotate])
|
33
|
+
g.set RGhost::Variable.new(:zoom,@options[:zoom]/100.0)
|
34
|
+
g.set RGhost::PsObject.new("(#{@file}) viewJPEG")
|
35
|
+
g.ps
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/lib/rghost/line.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
require "rghost/point"
|
3
|
+
|
4
|
+
#Creates straight lines
|
5
|
+
class RGhost::Line < RGhost::PsObject
|
6
|
+
DEFAULT_POINT={:x => :limit_left , :y => :current_row}
|
7
|
+
|
8
|
+
#Draw line the one pont until another, the first point is creates by moveto and de last point using the method lineto.
|
9
|
+
#===Examples
|
10
|
+
# doc=Document.new
|
11
|
+
# doc.moveto :x => 2, :y => 3
|
12
|
+
# doc.lineto :x => 5, :y => 2
|
13
|
+
#
|
14
|
+
#link:images/line01.png
|
15
|
+
#
|
16
|
+
# doc=Document.new
|
17
|
+
# doc.moveto :x => 2, :y => 3
|
18
|
+
# doc.lineto :x => 4, :y => 4
|
19
|
+
#
|
20
|
+
#link:images/line02.png
|
21
|
+
#
|
22
|
+
# doc=Document.new
|
23
|
+
# doc.border :color => '#AAFA49', :width => 4
|
24
|
+
# doc.moveto :x => 2, :y => 3
|
25
|
+
# doc.lineto :x => 4, :y => 1
|
26
|
+
#
|
27
|
+
#link:images/line03.png
|
28
|
+
#
|
29
|
+
# doc=Document.new
|
30
|
+
# doc.border :color => '#49AAFA', :width => 1
|
31
|
+
# doc.moveto :x => 2, :y => 3
|
32
|
+
# doc.lineto :x => 4, :y => 1
|
33
|
+
# doc.moveto :x => 2, :y => 3
|
34
|
+
# doc.lineto :x => 2, :y => 1
|
35
|
+
#
|
36
|
+
#link:images/line04.png
|
37
|
+
#
|
38
|
+
#Using graphic state to close path shape
|
39
|
+
#
|
40
|
+
# doc=Document.new
|
41
|
+
# doc.graphic do
|
42
|
+
# doc.border :color => '#49AAFA', :width => 1
|
43
|
+
# doc.moveto :x => 2, :y => 3
|
44
|
+
# doc.lineto :x => 4, :y => 1
|
45
|
+
# doc.lineto :x => 2, :y => 1
|
46
|
+
# doc.shape_content :color => "#F0FFFF"
|
47
|
+
# doc.closepath
|
48
|
+
# end
|
49
|
+
#
|
50
|
+
#link:images/line05.png
|
51
|
+
def self.lineto(point={})
|
52
|
+
|
53
|
+
RGhost::Line.make_command(:lineto,point)
|
54
|
+
|
55
|
+
end
|
56
|
+
#(Relative lineto) Draw straingh line in the same manner as lineto, but from current point to distance for next :x and :y. That is, rlineto constructs a line from (x, y) to (x + dx, y + dy) and makes (x + dx, y + dy) the new current point.
|
57
|
+
#
|
58
|
+
#===Examples
|
59
|
+
# doc=Document.new
|
60
|
+
# doc.moveto :x => 2, :y => 1
|
61
|
+
# doc.rlineto :x => 3, :y => 2
|
62
|
+
#
|
63
|
+
#link:images/line06.png
|
64
|
+
#
|
65
|
+
# doc=Document.new
|
66
|
+
# doc.moveto :x => 2, :y => 1
|
67
|
+
# doc.rlineto :x => 3, :y => 2
|
68
|
+
# doc.rlineto :x => 0, :y => -2
|
69
|
+
#link:images/line07.png
|
70
|
+
def self.rlineto(point={})
|
71
|
+
line=RGhost::Line.make_command(:rlineto,point)
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
private
|
77
|
+
def self.make_command(command,point={})
|
78
|
+
|
79
|
+
p=DEFAULT_POINT.dup.merge(point)
|
80
|
+
p=RGhost::Point.new(p[:x],p[:y])
|
81
|
+
RGhost::PsObject.new "#{p.ps}#{command}"
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
#Sets the line width parameter in the graphics state.
|
3
|
+
class RGhost::LineWidth < RGhost::PsObject
|
4
|
+
|
5
|
+
#Examples
|
6
|
+
#The more tiny line
|
7
|
+
# doc=Document.new
|
8
|
+
# doc.line_width 0
|
9
|
+
#
|
10
|
+
#link:images/line_width01.png
|
11
|
+
#
|
12
|
+
# doc.line_width 1
|
13
|
+
#
|
14
|
+
#link:images/line_width02.png
|
15
|
+
#
|
16
|
+
# doc.line_width 2
|
17
|
+
#
|
18
|
+
#link:images/line_width03.png
|
19
|
+
#
|
20
|
+
def initialize(value=0.3)
|
21
|
+
@value=value
|
22
|
+
end
|
23
|
+
|
24
|
+
def ps
|
25
|
+
"#{@value} setlinewidth "
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/lib/rghost/load.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
module RGhost::Load
|
3
|
+
#Loads library
|
4
|
+
def self.library(name, type=:ps)
|
5
|
+
#PsObject.new File.open(File.dirname(__FILE__)+File::SEPARATOR+type.to_s+File::SEPARATOR+name.to_s+"."+type.to_s).readlines.join("")
|
6
|
+
|
7
|
+
RGhost::PsObject.new("(#{name.to_s}.#{type}) runlibfile\n")
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.rg_enviroment
|
12
|
+
RGhost::PsObject.new do
|
13
|
+
raw RGhost::Load.library(:basic)
|
14
|
+
raw RGhost::Load.library(:cursor)
|
15
|
+
raw RGhost::Load.library(:rectangle)
|
16
|
+
raw RGhost::Load.library(:font)
|
17
|
+
raw RGhost::Load.library(:textarea)
|
18
|
+
raw RGhost::Load.library(:horizontal_line)
|
19
|
+
raw RGhost::Load.library(:vertical_line)
|
20
|
+
raw RGhost::Load.library(:callbacks)
|
21
|
+
raw RGhost::Load.library(:show)
|
22
|
+
raw RGhost::Load.library(:eps)
|
23
|
+
raw RGhost::Load.library(:jpeg)
|
24
|
+
raw RGhost::Load.library(:gif)
|
25
|
+
raw RGhost::Load.library(:begin_document)
|
26
|
+
raw RGhost::Load.library(:datagrid)
|
27
|
+
raw RGhost::Load.library(:text)
|
28
|
+
raw RGhost::Load.library(:frame)
|
29
|
+
raw RGhost::Load.library(:link)
|
30
|
+
raw RGhost::Load.library(:rect_link)
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
#Loads binary library
|
35
|
+
def self.binary(path)
|
36
|
+
File.open(path).readlines.join
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
require "rghost/cursor"
|
3
|
+
require "rghost/point"
|
4
|
+
require "rghost/line_width"
|
5
|
+
|
6
|
+
#Initializes the current path to be empty, causing the current point to become undefined.
|
7
|
+
class RGhost::NewPath < RGhost::PsObject
|
8
|
+
|
9
|
+
def initialize(&block)
|
10
|
+
@body=RGhost::PsFacade.new(&block)
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def ps
|
15
|
+
"newpath #{@body} closepath"
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
end
|
data/lib/rghost/paper.rb
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
require "rghost/units"
|
3
|
+
require "rghost/load"
|
4
|
+
require "rghost/constants"
|
5
|
+
require "rghost/ruby_to_ps"
|
6
|
+
#Paper is the area where the Postscript elements/objects are drawn.
|
7
|
+
#The margin is the document's non-printable area (both by the cursors and by the page's internal controllers).
|
8
|
+
#The :area_x and :area_y are the printable section of the paper.
|
9
|
+
#It's used to configure definitions of paper. It automatically defined into Document by :paper parameter.
|
10
|
+
#
|
11
|
+
#link:images/paper01.png
|
12
|
+
#
|
13
|
+
class RGhost::Paper < RGhost::PsObject
|
14
|
+
|
15
|
+
|
16
|
+
DEFAULT_OPTIONS={ :landscape => false,
|
17
|
+
:margin_top => 1,
|
18
|
+
:margin_right => 1,
|
19
|
+
:margin_bottom => 1,
|
20
|
+
:margin_left => 1,
|
21
|
+
:duplex => false,
|
22
|
+
:tumble => false
|
23
|
+
}
|
24
|
+
|
25
|
+
include RGhost::RubyToPs
|
26
|
+
#===Examples
|
27
|
+
#
|
28
|
+
#====Create paper by name
|
29
|
+
# doc=Document.new :paper => :A4
|
30
|
+
#====Create paper by name in landscape
|
31
|
+
# doc=Document.new :paper => :A4 , :landscape => true
|
32
|
+
#====Create custom paper
|
33
|
+
# doc=Document.new :paper => [10,15]
|
34
|
+
#====Defining all margins
|
35
|
+
# doc=Document.new :paper => :A5, :margin => 0.5
|
36
|
+
#====Defining custom margins
|
37
|
+
# doc=Document.new :paper => :A5, :margin => [0.5, 1, 0.5, 2] #=>[top,right,bottom,left] clockwise
|
38
|
+
#====Defining particular margin
|
39
|
+
# doc=Document.new :paper => :A5, :margin_top => 1, :margin_left => 0.3
|
40
|
+
#====Defining two faces document to printer
|
41
|
+
# doc=Document.new :paper => :A5, :duplex => true
|
42
|
+
#===Parameters
|
43
|
+
#* paper - The paper parameter can be either a Symbol or a Array. If paper parameter is a Symbol its value will search in RGhost::Constants::Papers . If paper parameter is a Array(with two numeric elements) will be position [0] width and [1] height of page. Example:
|
44
|
+
# doc=Document.new :paper => :A3 #=> Build new A3 paper
|
45
|
+
# doc=Document.new :paper => [5,5] #=> Build new custom paper 5x5, using default unit defined in RGhost::Config::GS[:unit].
|
46
|
+
#
|
47
|
+
#====Configuration options:
|
48
|
+
#* <tt>:landscape</tt> - If set to true will invert width to height and height to width.
|
49
|
+
#* <tt>:margin</tt> - Specifies margins non-printable area. It can be one Numeric for all margins or Array [top,right,bottom,left] margins.
|
50
|
+
#* <tt>:duplex</tt> - Specifies two faces(for print)
|
51
|
+
#* <tt>:tumble</tt> - Specifies kind of duplex
|
52
|
+
#
|
53
|
+
#
|
54
|
+
def initialize(paper=:A4, options={})
|
55
|
+
|
56
|
+
@options=DEFAULT_OPTIONS.merge(options)
|
57
|
+
@paper=paper
|
58
|
+
end
|
59
|
+
|
60
|
+
def ps
|
61
|
+
d=format_duplex
|
62
|
+
p=format_paper[:rg]
|
63
|
+
m=format_margin
|
64
|
+
|
65
|
+
lib=RGhost::Load.library :paper
|
66
|
+
|
67
|
+
d<< p << m << lib.ps
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
def gs_paper #:nodoc:
|
72
|
+
fp=format_paper
|
73
|
+
p=fp[:gs]
|
74
|
+
#["-dDEVICEWIDTHPOINTS=#{p[0]}", "-dDEVICEHEIGHTPOINTS=#{p[1]}"]
|
75
|
+
if fp[:done]
|
76
|
+
["-dDEVICEWIDTHPOINTS=#{p[0]}", "-dDEVICEHEIGHTPOINTS=#{p[1]}"]
|
77
|
+
else
|
78
|
+
["-dDEVICEWIDTHPOINTS=#{to_pt(p[0])}", "-dDEVICEHEIGHTPOINTS=#{to_pt(p[1])}"]
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def to_pt(value)
|
87
|
+
|
88
|
+
|
89
|
+
return case RGhost::Config::GS[:unit].new
|
90
|
+
when RGhost::Units::Cm then (value.to_f*72/2.545).to_i
|
91
|
+
when RGhost::Units::Inch then (value.to_f*72).to_i
|
92
|
+
else
|
93
|
+
value
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
def format_margin
|
98
|
+
#if @options[:margin]
|
99
|
+
# mt=mr=mb=ml=RGhost::Units::parse(@options[:margin])
|
100
|
+
#else
|
101
|
+
# mt=RGhost::Units::parse(@options[:margin_top])
|
102
|
+
# mr=RGhost::Units::parse(@options[:margin_right])
|
103
|
+
# mb=RGhost::Units::parse(@options[:margin_bottom])
|
104
|
+
# ml=RGhost::Units::parse(@options[:margin_left])
|
105
|
+
#end
|
106
|
+
|
107
|
+
case @options[:margin]
|
108
|
+
when Numeric then mt=mr=mb=ml=RGhost::Units::parse(@options[:margin])
|
109
|
+
when Array then
|
110
|
+
mt=RGhost::Units::parse(@options[:margin][0] || DEFAULT_OPTIONS[:margin_top] )
|
111
|
+
mr=RGhost::Units::parse(@options[:margin][1] || DEFAULT_OPTIONS[:margin_right])
|
112
|
+
mb=RGhost::Units::parse(@options[:margin][2] || DEFAULT_OPTIONS[:margin_bottom])
|
113
|
+
ml=RGhost::Units::parse(@options[:margin][3] || DEFAULT_OPTIONS[:margin_left] )
|
114
|
+
when Hash,NilClass
|
115
|
+
mt=RGhost::Units::parse(@options[:margin_top ] || DEFAULT_OPTIONS[:margin_top] )
|
116
|
+
mr=RGhost::Units::parse(@options[:margin_right ] || DEFAULT_OPTIONS[:margin_right])
|
117
|
+
mb=RGhost::Units::parse(@options[:margin_bottom] || DEFAULT_OPTIONS[:margin_bottom])
|
118
|
+
ml=RGhost::Units::parse(@options[:margin_left ] || DEFAULT_OPTIONS[:margin_left] )
|
119
|
+
end
|
120
|
+
|
121
|
+
"/margin 3 dict def margin begin /top #{mt} def /right #{mr} def /bottom #{mb} def /left #{ml} def end\n"
|
122
|
+
end
|
123
|
+
|
124
|
+
def format_paper
|
125
|
+
|
126
|
+
case @paper
|
127
|
+
when Symbol then
|
128
|
+
|
129
|
+
p=RGhost::Constants::Papers::STANDARD[@paper.to_s.downcase.to_sym]
|
130
|
+
p.reverse! if @options[:landscape]
|
131
|
+
{:rg => "/pagesize #{to_array( p ) } def\n", :gs => p, :done => true}
|
132
|
+
when Array then
|
133
|
+
@paper.reverse! if @options[:landscape]
|
134
|
+
{:rg => "/pagesize #{to_array( @paper.map{|v| to_pt(v) } ) } def\n", :gs => @paper, :done => false}
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
end
|
139
|
+
|
140
|
+
|
141
|
+
def format_duplex
|
142
|
+
"\n<< /Duplex #{@options[:duplex]} /Tumble #{@options[:tumble]} >> setpagedevice\n"
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
#puts Paper.new(:A4, :landscape => true, :duplex => true, :margin=> [2,3,4,5])
|
@@ -0,0 +1,53 @@
|
|
1
|
+
|
2
|
+
module RGhost::ParseText #:nodoc:
|
3
|
+
|
4
|
+
def text_to_ps
|
5
|
+
|
6
|
+
unless @tag_parse
|
7
|
+
case @options[:text_align]
|
8
|
+
when :center, :right then
|
9
|
+
@text.split(/\n/).map{|l| "#{to_string(l)} :text_proc_cr :nbw " }.to_s
|
10
|
+
jump_with=':nbw'
|
11
|
+
when :left,nil then
|
12
|
+
if self.class == RGhost::Text
|
13
|
+
return @text.split(/\n/).map{|l| " :text #{to_string(l)} :text_proc nrdp " }.to_s
|
14
|
+
|
15
|
+
else
|
16
|
+
@text.split(/\n/).map{|l| " :text_area #{to_string(l)} :text_proc_cr :nbw " }.to_s
|
17
|
+
jump_with='nrdp'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
jump_with=':nbw' if self.class == RGhost::TextArea
|
25
|
+
|
26
|
+
|
27
|
+
ret=@text.split(/<br\/?>|\n/).map do |piece|
|
28
|
+
text_ok=""
|
29
|
+
piece.scan(/<([^>]+)>([^<]*.)<\/\1>|([^<>]+)/).each do |t|
|
30
|
+
t.compact!
|
31
|
+
if t && t.size == 1
|
32
|
+
text_ok << ta_entry(t.first.to_s)
|
33
|
+
else
|
34
|
+
text_ok << ta_entry(t[1],t.first)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
text_ok
|
38
|
+
end
|
39
|
+
|
40
|
+
ret.join(" #{jump_with || 'nrdp' } ").gsub(/</,'<').gsub(/>/,'>')
|
41
|
+
end
|
42
|
+
|
43
|
+
def ta_entry(e,tag="default_font")
|
44
|
+
if self.class == RGhost::Text and @options[:text_align] == :left
|
45
|
+
" :text _#{tag} #{to_string(e)} :text_proc "
|
46
|
+
elsif self.class == RGhost::TextArea and @options[:text_align] == :left
|
47
|
+
" :text_area _#{tag} #{to_string(e)} :text_proc "
|
48
|
+
else
|
49
|
+
" _#{tag} #{to_string(e)} :text_proc_cr "
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|