lunks_rghost 0.8.7.6
Sign up to get free protection for your applications and to get access to all the features.
- 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 +29 -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 +252 -0
- data/lib/rghost/ruby_ghost_engine.rb +174 -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
- data/lib/rghost.rb +18 -0
- metadata +181 -0
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
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
class RGhost::PdfSecurity
|
3
|
+
PERMISSION_VALUES={
|
4
|
+
:base => -4,
|
5
|
+
:print => -4,
|
6
|
+
:modify => -8,
|
7
|
+
:copy => -16,
|
8
|
+
:annotate => -32,
|
9
|
+
:interactive => -256,
|
10
|
+
:copy_access => -512,
|
11
|
+
:assemble => -1024,
|
12
|
+
:high_quality_print => -2048,
|
13
|
+
:all => -3904
|
14
|
+
|
15
|
+
}
|
16
|
+
attr_accessor :owner_password,:user_password,:key_length
|
17
|
+
def initialize
|
18
|
+
@permission_value=PERMISSION_VALUES[:all]
|
19
|
+
@key_lenght=128
|
20
|
+
@owner_password="unknow"
|
21
|
+
@user_password="unknow"
|
22
|
+
end
|
23
|
+
def disable(*permissions)
|
24
|
+
@permission_value=permissions.map{|p| PERMISSION_VALUES[p] }.inject(0){|n,i| i+=n}
|
25
|
+
end
|
26
|
+
def gs_params
|
27
|
+
"-sOwnerPassword##{clear_space(@owner_password)} -sUserPassword##{clear_space(@user_password)} -dEncryptionR#3 -dKeyLength##{@key_lenght} -dPermissions##{@permission_value}"
|
28
|
+
end
|
29
|
+
private
|
30
|
+
|
31
|
+
def clear_space(value)
|
32
|
+
value.to_s.gsub(/([^\w])/,'')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
data/lib/rghost/point.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
require "rghost/units"
|
3
|
+
|
4
|
+
#Creates one point using default unit defined in RGhost::Config::GS[:unit]
|
5
|
+
class RGhost::Point < RGhost::PsObject
|
6
|
+
attr_accessor :x,:y
|
7
|
+
|
8
|
+
def initialize(x,y)
|
9
|
+
if x.is_a? Hash
|
10
|
+
point=x
|
11
|
+
@x,@y=point[:x],point[:y]
|
12
|
+
else
|
13
|
+
@x,@y=x,y
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def ps
|
18
|
+
"#{RGhost::Units::parse(@x)} #{RGhost::Units::parse(@y)} "
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rghost/ps_object"
|
2
|
+
require "rghost/units"
|
3
|
+
|
4
|
+
class RGhost::PointWithCommand #:nodoc:
|
5
|
+
DEFAULT_POINT={:x => :limit_left , :y => :current_row}
|
6
|
+
|
7
|
+
def self.to(command,point={})
|
8
|
+
|
9
|
+
p=DEFAULT_POINT.dup.merge(point)
|
10
|
+
|
11
|
+
p=RGhost::Point.new(p[:x],p[:y])
|
12
|
+
RGhost::PsObject.new "#{p.ps}#{command}"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#Draw one shape based in relative node points.
|
2
|
+
#===Options
|
3
|
+
#
|
4
|
+
#* <tt>:x and :y</tt> - Initial position.
|
5
|
+
#* <tt>:content</tt> - Facade to ShapeContent with same parameters.
|
6
|
+
#* <tt>:border</tt> - Facade to Border with same parameters.
|
7
|
+
#===Examples
|
8
|
+
#
|
9
|
+
# doc.polygon :x => 3.5, :y => 5.5 do
|
10
|
+
# node :x => 4, :y => 0
|
11
|
+
# node :x => 0, :y => -4
|
12
|
+
# node :x => -4, :y => 0
|
13
|
+
# node :x => 0, :y => 4
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
#link:images/polygon01.png
|
17
|
+
#
|
18
|
+
# doc.polygon :x => 3.5, :y => 4.5 do
|
19
|
+
# node :x => 2, :y => 2
|
20
|
+
# node :x => 2, :y => -2
|
21
|
+
# node :x => -2, :y => -2
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
#link:images/polygon02.png
|
25
|
+
#
|
26
|
+
# doc.polygon :x => 1, :y => 5, :border => {:width => 2, :linejoin => 1} do
|
27
|
+
# node :x => 2, :y => 2/2
|
28
|
+
# node :x => 2*2,:y => -2
|
29
|
+
# node :x => -1, :y => -3
|
30
|
+
# node :x => 2, :y => 1
|
31
|
+
# node :x => 3, :y => 2
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
#link:images/polygon03.png
|
35
|
+
class RGhost::Polygon < RGhost::PsObject
|
36
|
+
attr_reader :points
|
37
|
+
|
38
|
+
DEFAULT_OPTIONS={
|
39
|
+
:x => :limit_left,
|
40
|
+
:y => :current_row,
|
41
|
+
:content => RGhost::ShapeContent::DEFAULT_OPTIONS,
|
42
|
+
:border => RGhost::Border::DEFAULT_OPTIONS
|
43
|
+
|
44
|
+
|
45
|
+
}
|
46
|
+
def initialize(options={},&block)
|
47
|
+
super(''){}
|
48
|
+
|
49
|
+
@options = DEFAULT_OPTIONS.dup.merge(options)
|
50
|
+
@points=[]
|
51
|
+
instance_eval(&block) if block
|
52
|
+
end
|
53
|
+
#Creates new relative point by :x => 2 and :y => 4. Used as instance_eval
|
54
|
+
def node(point)
|
55
|
+
@points << point
|
56
|
+
end
|
57
|
+
|
58
|
+
def ps
|
59
|
+
graph=RGhost::Graphic.new
|
60
|
+
graph.set RGhost::Cursor.moveto(@options)
|
61
|
+
graph.set RGhost::Border.new(@options[:border]) if @options[:border]
|
62
|
+
|
63
|
+
@points.each{|p| graph.set RGhost::Line.rlineto(p) }
|
64
|
+
|
65
|
+
graph.raw :closepath
|
66
|
+
#graph.raw :gsave
|
67
|
+
graph.set RGhost::ShapeContent.new(@options[:content]) if @options[:content]
|
68
|
+
#graph.raw :grestore
|
69
|
+
graph.raw :stroke
|
70
|
+
graph
|
71
|
+
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|