Class: Chem::PDFWriter
- Inherits:
-
Object
show all
- Includes:
- Writer
- Defined in:
- lib/chem/db/pdf.rb
Constant Summary
collapse
"%PDF-1.3\n1 0 obj\n<< /Type /Catalog\n/Outlines 2 0 R\n/Pages 3 0 R\n>>\nendobj\n2 0 obj\n<< /Type /Outlines\n/Count 0\n>>\nendobj\n3 0 obj\n<< /Type /Pages\n/Kids [ 4 0 R]\n/Count 1\n>>\nendobj\n4 0 obj\n<< /Type /Page\n/Parent 3 0 R\n"
- PDFMiddle =
"/Contents 5 0 R\n/Resources << /ProcSet 6 0 R\n/Font << /F1 7 0 R >>\n>>\n>>\nendobj\n5 0 obj\n"
"endstream\nendobj\n6 0 obj\n[ /PDF /Text ]\nendobj\n7 0 obj\n<< /Type /Font\n/Subtype /Type1\n/Name /F1\n/BaseFont /Helvetica\n/Encoding /MacRomanEncoding\n>>\nendobj\nxref\n0 8\n0000000000 65535 f\n0000000009 00000 n\n0000000074 00000 n\n0000000120 00000 n\n0000000179 00000 n\n0000000364 00000 n\n0000000466 00000 n\n0000000496 00000 n\ntrailer\n<< /Size 8\n/Root 1 0 R\n>>\nstartxref\n625\n%%EOF\n"
Instance Method Summary
collapse
Methods included from Writer
#draw_body, #fbox, #to_256
Constructor Details
#initialize(mol, params) ⇒ PDFWriter
Returns a new instance of PDFWriter.
76
77
78
79
80
81
82
|
# File 'lib/chem/db/pdf.rb', line 76
def initialize mol, params
params[:size] ||= [180, 200]
params[:orig_point] ||= [0, 0]
params[:margin] ||= [10, 10]
@default_pointsize = (params[:pointsize] ? params[:pointsize] : 14)
super
end
|
Instance Method Details
#fill(nodes, color) ⇒ Object
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/chem/db/pdf.rb', line 91
def fill(nodes, color)
@vect << "0 w"
@vect << color.join(' ') + " RG"
@vect << "%d %d m" % [nodes[0][0], nodes[0][1]]
nodes[1..-1].each do |vect|
@vect << "%d %d l" % [vect[0], vect[1]]
end
@vect << "b"
@vect << "1 w"
end
|
#line(from, to, color) ⇒ Object
84
85
86
87
88
89
|
# File 'lib/chem/db/pdf.rb', line 84
def line(from, to, color)
@vect << color.join(' ') + " RG"
@vect << "#{from[0]} #{from[1]} m"
@vect << "#{to[0]} #{to[1]} l"
@vect << "S"
end
|
#save(out) ⇒ Object
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
# File 'lib/chem/db/pdf.rb', line 112
def save out
@out = out
@params[:font] ||= 12.0
@params[:orig_point] ||= [0, 0]
@vect = ["q"]
@vect << "1 0 0 1 #{@params[:orig_point][0]} #{@params[:orig_point][1]} cm"
@out.puts()
@out.puts "/MediaBox [ 0 0 %d %d]" % @params[:size]
@out.puts PDFMiddle
draw_body
@vect << "Q"
str = @vect.join("\n")
@out.puts "<< /Length #{str.length} >> stream"
@out.puts str
@out.puts
end
|
#text(str, x, y, params = {}) ⇒ Object
102
103
104
105
106
107
108
109
110
|
# File 'lib/chem/db/pdf.rb', line 102
def text(str, x, y, params = {})
@vect << "BT"
color = params[:color].nil? ? "0 0 0" : params[:color].join(" ")
@vect << "#{color} rg"
@vect << "/F1 #{@params[:font]} Tf"
@vect << "1 0 0 1 #{x - @params[:font] * 0.4} #{y - @params[:font] * 0.4} Tm"
@vect << "(#{str}) Tj"
@vect << "ET"
end
|