gb_mapfish_appserver 1.0.6 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Gemfile +3 -1
- data/README.md +5 -2
- data/app/controllers/print_controller.rb +376 -127
- data/lib/gb_mapfish_appserver/version.rb +1 -1
- data/lib/generators/mapfish/install/install_generator.rb +5 -3
- data/lib/generators/mapfish/install/templates/initializer.rb +4 -0
- data/lib/generators/mapfish/install/templates/print/A4_portrait.jrxml +41 -0
- data/lib/generators/mapfish/install/templates/print/config.yaml +24 -0
- data/test/dummy/config/environments/development.rb +3 -1
- data/test/dummy/config/environments/production.rb +1 -1
- data/test/dummy/config/environments/test.rb +1 -1
- data/test/dummy/config/initializers/mapfish.rb +4 -0
- data/test/dummy/print/A4_portrait.jrxml +41 -0
- data/test/dummy/print/config.yaml +24 -0
- metadata +8 -5
- data/lib/generators/mapfish/install/templates/print.yml +0 -76
- data/test/dummy/config/print.yml +0 -76
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmFkMTY4MDk4Njg0YTdmNmJlYTU3MjU5NmZkMjI4Mzg5MWI2ZmFiYw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MDczMjlkNmFiY2VjNjkwNzY3OWViNDNhMTUwMTE2MzI1NzgzZDg1Mg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmRhNmNhNGM1YTJjOGI5YmU3MTZkNjg3ZDRjZmRjZmNjMjA5ZGRlYTk5ODIx
|
10
|
+
NDBiMmZlMDllYWFmY2Y1MGE0OWE1YjNhY2E2MjQxNDVmZDFlOTgzNTM5YTA1
|
11
|
+
MzE2MTBmOTAwYWU0YjA4ZDRjN2FiYmQ5NDMzYzEyZmZhNDA4ZjI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTgyYTFmMWNhYWNmMjYyMDkxNDBmNjNkNDg0ZDMzYzE5MDI5ODM5ZDk0ZTZh
|
14
|
+
NjcwYThiNmZlYTM3ZmJhNTcyMzk2ZWFiZjQ3YWU0MzEwOWY4ODZlZTQxYjY0
|
15
|
+
MjY5YmZiZDMxZGYxMjc0NDAyMGRiZjQ4Y2M5MTBhMDE1NTJkN2M=
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -31,12 +31,15 @@ Documentation
|
|
31
31
|
|
32
32
|
For more documentation see the [mapfish-appserver.github.io](http://mapfish-appserver.github.io/)
|
33
33
|
|
34
|
+
Note: Mapfish Appserver v1.1.0 or later no longer uses the gb_mapfish_print gem, but uses a
|
35
|
+
separately installed Mapfish Print v3 for printing (see documentation)
|
36
|
+
|
34
37
|
Authors and License
|
35
38
|
-------------------
|
36
39
|
|
37
|
-
Primary authors are Pirmin Kalberer and
|
40
|
+
Primary authors are Pirmin Kalberer and Mathias Walker, Sourcepole,
|
38
41
|
Stefan Zinggeler and Adrian Herzog, Canton of Zurich.
|
39
42
|
|
40
43
|
New BSD License
|
41
44
|
|
42
|
-
*Copyright (c) 2009-
|
45
|
+
*Copyright (c) 2009-2015 Sourcepole AG & Canton of Zurich*
|
@@ -1,7 +1,6 @@
|
|
1
1
|
#Mapfish print controller with access control and servlet call
|
2
2
|
|
3
3
|
class PrintController < ApplicationController
|
4
|
-
require 'popen4'
|
5
4
|
begin
|
6
5
|
require 'RMagick'
|
7
6
|
rescue LoadError
|
@@ -15,12 +14,18 @@ class PrintController < ApplicationController
|
|
15
14
|
|
16
15
|
class JavaError < Exception
|
17
16
|
def initialize(cmd, message)
|
18
|
-
super(cmd+"\n"+message)
|
17
|
+
super(cmd + "\n\n" + message)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class MapfishError < Exception
|
22
|
+
def initialize(cmd, message)
|
23
|
+
super(cmd + "\n\n" + message)
|
19
24
|
end
|
20
25
|
end
|
21
26
|
|
22
27
|
def initialize
|
23
|
-
@configFile = "#{Rails.root}/config
|
28
|
+
@configFile = "#{Rails.root}/print/config.yaml"
|
24
29
|
end
|
25
30
|
|
26
31
|
TMP_PREFIX = "#{PRINT_TMP_PATH}/mfPrintTempFile"
|
@@ -28,44 +33,77 @@ class PrintController < ApplicationController
|
|
28
33
|
TMP_PURGE_SECONDS = 600
|
29
34
|
|
30
35
|
OUTPUT_FORMATS = ["pdf", "png", "jpg", "tif", "gif"]
|
36
|
+
MAPFISH_PRINT_OUTPUT_FORMATS = ["pdf", "png", "tif", "gif", "bmp"]
|
31
37
|
|
32
38
|
def info
|
33
|
-
#
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
+
# return v2 print info format for GbPrintPanel
|
40
|
+
info = {}
|
41
|
+
info['createURL'] = url_for(:protocol => request.protocol, :action=>'create') + '.json'
|
42
|
+
|
43
|
+
# add output formats
|
44
|
+
info['outputFormats'] = []
|
45
|
+
OUTPUT_FORMATS.each do |output_format|
|
46
|
+
info['outputFormats'] << {:name => output_format}
|
47
|
+
end
|
39
48
|
|
40
|
-
|
41
|
-
|
49
|
+
# add scales
|
50
|
+
info['scales'] = print_scales.collect do |scale|
|
51
|
+
{:name => "1:#{scale}", :value => scale}
|
42
52
|
end
|
43
|
-
if status.nil? || status.exitstatus != 0
|
44
|
-
raise JavaError.new(cmd, errors)
|
45
|
-
else
|
46
|
-
info = ActiveSupport::JSON.decode(result)
|
47
|
-
info['createURL'] = url_for(:protocol => request.protocol, :action=>'create') + '.json'
|
48
|
-
# add output formats
|
49
|
-
info['outputFormats'] = []
|
50
|
-
OUTPUT_FORMATS.each do |output_format|
|
51
|
-
info['outputFormats'] << {:name => output_format}
|
52
|
-
end
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
54
|
+
# add dpis
|
55
|
+
info['dpis'] = print_dpis.collect do |dpi|
|
56
|
+
{:name => "#{dpi}", :value => dpi}
|
57
|
+
end
|
58
|
+
|
59
|
+
# NOTE: load templates directly from YAML instead of parsing the Mapfish Print capabilities
|
60
|
+
mapfish_config = YAML.load(File.read(@configFile))
|
61
|
+
|
62
|
+
# parse layouts
|
63
|
+
info['layouts'] = []
|
64
|
+
mapfish_config['templates'].each do |name, template|
|
65
|
+
# skip custom templates
|
66
|
+
next if template['attributes'].has_key?('gb_custom_template')
|
67
|
+
|
68
|
+
map = template['attributes']['map']
|
69
|
+
# skip if no map
|
70
|
+
next if map.nil?
|
71
|
+
|
72
|
+
info['layouts'] << {
|
73
|
+
:name => name,
|
74
|
+
:map => {
|
75
|
+
:width => map['width'],
|
76
|
+
:height => map['height'],
|
77
|
+
},
|
78
|
+
:rotation => true
|
79
|
+
}
|
80
|
+
end
|
81
|
+
|
82
|
+
respond_to do |format|
|
83
|
+
format.json do
|
84
|
+
if params[:var]
|
85
|
+
render :text => "var #{params[:var]} = #{info.to_json};"
|
86
|
+
else
|
87
|
+
render :json => info
|
61
88
|
end
|
62
89
|
end
|
63
90
|
end
|
64
91
|
end
|
65
92
|
|
66
93
|
def create
|
94
|
+
unless check_permissions
|
95
|
+
head :forbidden
|
96
|
+
return
|
97
|
+
end
|
98
|
+
|
67
99
|
cleanupTempFiles
|
68
100
|
|
101
|
+
# remove Rails params
|
102
|
+
controller = request.parameters.delete('controller')
|
103
|
+
request.parameters.delete('action')
|
104
|
+
request.parameters.delete('format')
|
105
|
+
request.parameters.delete(controller) unless controller.nil?
|
106
|
+
|
69
107
|
accessible_topics = Topic.accessible_by(current_ability).collect{ |topic| topic.name }
|
70
108
|
layers_to_delete = []
|
71
109
|
request.parameters["layers"].each do |layer|
|
@@ -105,7 +143,6 @@ class PrintController < ApplicationController
|
|
105
143
|
# remove inaccessible layers
|
106
144
|
request.parameters["layers"] -= layers_to_delete
|
107
145
|
|
108
|
-
scales = []
|
109
146
|
request.parameters["pages"].each do |page|
|
110
147
|
# round center coordinates
|
111
148
|
page["center"].collect! {|coord| (coord * 100.0).round / 100.0 }
|
@@ -119,55 +156,38 @@ class PrintController < ApplicationController
|
|
119
156
|
# disclaimer
|
120
157
|
topic = Topic.accessible_by(current_ability).where(:name => page["topic"]).first
|
121
158
|
page["disclaimer"] = topic.nil? ? Topic.default_print_disclaimer : topic.print_disclaimer
|
122
|
-
# scale
|
123
|
-
scales << page["scale"]
|
124
159
|
end
|
125
160
|
|
126
|
-
|
127
|
-
|
161
|
+
report = request.parameters["layout"]
|
162
|
+
if print_templates.include?(report)
|
163
|
+
# Mapfish
|
164
|
+
print_params = convert_mapfish_v2_params(request.parameters)
|
165
|
+
output_format = print_params["outputFormat"]
|
128
166
|
|
129
|
-
|
167
|
+
# add any custom params
|
168
|
+
set_custom_print_params(report, print_params)
|
130
169
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
# MapFish
|
140
|
-
#print-standalone
|
141
|
-
tempId = SecureRandom.random_number(2**31)
|
142
|
-
|
143
|
-
# use temp config file with added custom scales
|
144
|
-
print_config = File.read(@configFile)
|
145
|
-
print_config.gsub!(/scales:/, "scales:\n#{ scales.collect {|s| " - #{s.to_s}"}.join("\n") }")
|
146
|
-
config_file = TMP_PREFIX + tempId.to_s + "print.yml"
|
147
|
-
File.open(config_file, "w") { |file| file << print_config }
|
148
|
-
|
149
|
-
temp = TMP_PREFIX + tempId.to_s + TMP_SUFFIX
|
150
|
-
cmd = baseCmd(config_file) + " --output=" + temp
|
151
|
-
result = ""
|
152
|
-
errors = ""
|
153
|
-
status = POpen4::popen4(cmd) do |stdout, stderr, stdin, pid|
|
154
|
-
stdin.puts request.parameters.to_json
|
155
|
-
#body = request.body
|
156
|
-
#FileUtils.copy_stream(body, stdin)
|
157
|
-
#body.close
|
158
|
-
stdin.close
|
159
|
-
result = stdout.readlines.join("\n")
|
160
|
-
errors = stderr.readlines.join("\n")
|
161
|
-
end
|
162
|
-
if status.nil? || status.exitstatus != 0
|
163
|
-
raise JavaError.new(cmd, errors)
|
164
|
-
else
|
165
|
-
convert_and_send_link(temp, tempId, request.parameters["dpi"], outputFormat)
|
170
|
+
# create report
|
171
|
+
temp, temp_id = mapfish_print(print_params)
|
172
|
+
|
173
|
+
# send link to print result
|
174
|
+
respond_to do |format|
|
175
|
+
format.json do
|
176
|
+
render :json => { 'getURL' => url_for(:action => 'show', :id => temp_id) + ".#{output_format}" }
|
177
|
+
end
|
166
178
|
end
|
179
|
+
else
|
180
|
+
# JasperReport
|
181
|
+
call_report(request.parameters["report"], request)
|
167
182
|
end
|
168
183
|
end
|
169
184
|
|
170
185
|
def show
|
186
|
+
unless check_permissions
|
187
|
+
head :forbidden
|
188
|
+
return
|
189
|
+
end
|
190
|
+
|
171
191
|
output_format = params[:format]
|
172
192
|
type = nil
|
173
193
|
if OUTPUT_FORMATS.include?(output_format)
|
@@ -183,24 +203,40 @@ class PrintController < ApplicationController
|
|
183
203
|
when "gif"
|
184
204
|
type = 'image/gif'
|
185
205
|
end
|
206
|
+
else
|
207
|
+
# invalid format
|
208
|
+
head :bad_request
|
209
|
+
return
|
186
210
|
end
|
187
211
|
is_mapfish_print_id = (params[:id] =~ /^[0-9]+$/)
|
188
212
|
if is_mapfish_print_id
|
213
|
+
# deliver document generated previously by create()
|
189
214
|
temp = TMP_PREFIX + params[:id] + ".#{output_format}"
|
190
215
|
send_file temp, :type => type, :disposition => 'attachment', :filename => params[:id] + ".#{output_format}"
|
191
216
|
else
|
192
|
-
|
193
|
-
|
194
|
-
if
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
217
|
+
# create document
|
218
|
+
report = params[:id]
|
219
|
+
if custom_print_templates.include?(report)
|
220
|
+
# Mapfish custom report
|
221
|
+
|
222
|
+
# minimal Mapfish print params
|
223
|
+
print_params = params.reject {|p| ['id', 'controller', 'action', 'format'].include?(p) }
|
224
|
+
print_params['layout'] = report
|
225
|
+
print_params['outputFormat'] = output_format
|
226
|
+
print_params['attributes'] = {}
|
227
|
+
print_params['dpi'] = print_params['dpi'] || print_dpis.first
|
228
|
+
|
229
|
+
# add any custom params
|
230
|
+
set_custom_print_params(report, print_params)
|
231
|
+
|
232
|
+
# create report
|
233
|
+
temp, temp_id = mapfish_print(print_params)
|
234
|
+
|
235
|
+
default_filename = "#{report}.#{output_format}"
|
236
|
+
send_custom_report(report, print_params, temp, type, default_filename)
|
201
237
|
else
|
202
|
-
|
203
|
-
|
238
|
+
# JasperReport
|
239
|
+
create_and_send_jasper_report(report, request, type, "#{report}.pdf")
|
204
240
|
end
|
205
241
|
end
|
206
242
|
end
|
@@ -240,6 +276,48 @@ class PrintController < ApplicationController
|
|
240
276
|
|
241
277
|
protected
|
242
278
|
|
279
|
+
def print_scales
|
280
|
+
if defined? PRINT_SCALES
|
281
|
+
# from config
|
282
|
+
PRINT_SCALES
|
283
|
+
else
|
284
|
+
# default
|
285
|
+
[500, 1000, 2500, 5000, 10000, 15000, 25000, 50000, 100000, 200000, 500000]
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
def print_dpis
|
290
|
+
if defined? PRINT_DPIS
|
291
|
+
# from config
|
292
|
+
PRINT_DPIS
|
293
|
+
else
|
294
|
+
# default
|
295
|
+
[150, 300]
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
def print_templates
|
300
|
+
@print_templates ||= begin
|
301
|
+
# get all templates from Mapfish print config
|
302
|
+
mapfish_config = YAML.load(File.read(@configFile))
|
303
|
+
mapfish_config['templates'].keys
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
def custom_print_templates
|
308
|
+
@custom_print_templates ||= begin
|
309
|
+
# get custom templates from Mapfish print config
|
310
|
+
mapfish_config = YAML.load(File.read(@configFile))
|
311
|
+
mapfish_config['templates'].keep_if {|k, v| v['attributes'].has_key?('gb_custom_template') }.keys
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
# check permission for printing, e.g. check params to limit reports to user roles
|
316
|
+
# override in descendant classes
|
317
|
+
def check_permissions
|
318
|
+
true
|
319
|
+
end
|
320
|
+
|
243
321
|
def rewrite_wms_uri(url, use_cgi)
|
244
322
|
#http://wms.zh.ch/basis -> http://127.0.0.1/cgi-bin/mapserv.fcgi?MAP=/opt/geodata/mapserver/maps/intranet/basis.map&
|
245
323
|
out = url
|
@@ -255,9 +333,128 @@ class PrintController < ApplicationController
|
|
255
333
|
out
|
256
334
|
end
|
257
335
|
|
336
|
+
# add custom print params according to report type, e.g. add map and zoom to feature in custom reports
|
337
|
+
# override in descendant classes
|
338
|
+
def set_custom_print_params(report, print_params)
|
339
|
+
=begin example
|
340
|
+
case report
|
341
|
+
when "TopicName"
|
342
|
+
# add map and layer
|
343
|
+
layer_url = rewrite_wms_uri("#{wms_host}/TopicName", false)
|
344
|
+
print_params['attributes']['map'] = {
|
345
|
+
:dpi => print_params[:dpi],
|
346
|
+
:bbox => [669242, 223923, 716907, 283315],
|
347
|
+
:projection => 'EPSG:21781',
|
348
|
+
:layers => [
|
349
|
+
{
|
350
|
+
:type => 'WMS',
|
351
|
+
:baseURL => layer_url,
|
352
|
+
:layers => ['Layer1', 'Layer2'],
|
353
|
+
:imageFormat => 'image/png; mode=8bit',
|
354
|
+
:styles => [''],
|
355
|
+
:customParams => {
|
356
|
+
:TRANSPARENT => true,
|
357
|
+
:map_resolution => print_params['dpi']
|
358
|
+
}
|
359
|
+
}
|
360
|
+
]
|
361
|
+
}
|
362
|
+
end
|
363
|
+
=end
|
364
|
+
end
|
365
|
+
|
366
|
+
def mapfish_print(print_params)
|
367
|
+
output_format = print_params["outputFormat"]
|
368
|
+
unless MAPFISH_PRINT_OUTPUT_FORMATS.include?(output_format)
|
369
|
+
# convert to raster from pdf
|
370
|
+
print_params['outputFormat'] = 'pdf'
|
371
|
+
end
|
372
|
+
|
373
|
+
logger.info "Mapfish Print v3: #{print_params.to_yaml}"
|
374
|
+
|
375
|
+
temp_id = SecureRandom.random_number(2**31)
|
376
|
+
temp_mapfish = "#{TMP_PREFIX}#{temp_id.to_s}.#{print_params['outputFormat']}"
|
377
|
+
|
378
|
+
if PRINT_URL.present?
|
379
|
+
# call Mapfish Print servlet
|
380
|
+
data = {
|
381
|
+
:spec => print_params.to_json
|
382
|
+
}
|
383
|
+
response = call_servlet('POST', "buildreport.#{print_params['outputFormat']}", data)
|
384
|
+
File.open(temp_mapfish, 'wb') {|f| f.write(response.body) }
|
385
|
+
else
|
386
|
+
# call Mapfish Print standalone
|
387
|
+
print_standalone(print_params, temp_mapfish)
|
388
|
+
end
|
389
|
+
|
390
|
+
temp = temp_mapfish
|
391
|
+
unless MAPFISH_PRINT_OUTPUT_FORMATS.include?(output_format)
|
392
|
+
# convert PDF to image if not supported by Mapfish Print
|
393
|
+
pdf = Magick::Image.read(temp_mapfish) { self.density = print_params['dpi'] }.first
|
394
|
+
temp_img = "#{TMP_PREFIX}#{temp_id.to_s}.#{output_format}"
|
395
|
+
pdf.write(temp_img)
|
396
|
+
File.delete(temp_mapfish)
|
397
|
+
temp = temp_img
|
398
|
+
end
|
399
|
+
|
400
|
+
return temp, temp_id
|
401
|
+
end
|
402
|
+
|
403
|
+
def call_servlet(method, action, print_params=nil)
|
404
|
+
begin
|
405
|
+
url = URI.parse(URI.decode("#{PRINT_URL}/#{action}"))
|
406
|
+
logger.info "Forward request: #{method} #{url}"
|
407
|
+
|
408
|
+
case method
|
409
|
+
when 'GET'
|
410
|
+
# add params to URL
|
411
|
+
url = URI.parse("#{url}?#{print_params.to_param}") unless print_params.nil?
|
412
|
+
response = Net::HTTP.get_response(url)
|
413
|
+
when 'POST'
|
414
|
+
http = Net::HTTP.new(url.host, url.port)
|
415
|
+
req = Net::HTTP::Post.new(url.path)
|
416
|
+
req.set_form_data(print_params)
|
417
|
+
response = http.request(req)
|
418
|
+
else
|
419
|
+
raise Exception.new("Unsupported method '#{method}'")
|
420
|
+
end
|
421
|
+
rescue => err
|
422
|
+
raise MapfishError.new("#{method} #{url}\n#{print_params.to_json}", "#{err.class}: #{err.message}")
|
423
|
+
end
|
424
|
+
|
425
|
+
if response.code != '200'
|
426
|
+
raise MapfishError.new("#{method} #{url}\n#{print_params.to_json}", response.body)
|
427
|
+
end
|
428
|
+
|
429
|
+
response
|
430
|
+
end
|
431
|
+
|
258
432
|
def baseCmd(config_file = nil)
|
259
433
|
config = config_file || @configFile
|
260
|
-
"java -cp #{
|
434
|
+
"java -cp '#{PRINT_STANDALONE_JARS}' org.mapfish.print.cli.Main -config #{config} -verbose 0"
|
435
|
+
end
|
436
|
+
|
437
|
+
def print_standalone(print_params, temp_mapfish)
|
438
|
+
require 'popen4'
|
439
|
+
|
440
|
+
cmd = "#{baseCmd} -output #{temp_mapfish}"
|
441
|
+
#result = ""
|
442
|
+
errors = ""
|
443
|
+
status = POpen4::popen4(cmd) do |stdout, stderr, stdin, pid|
|
444
|
+
stdin.puts print_params.to_json
|
445
|
+
stdin.close
|
446
|
+
#result = stdout.readlines.join("")
|
447
|
+
errors = stderr.readlines.join("")
|
448
|
+
end
|
449
|
+
if status.nil? || status.exitstatus != 0
|
450
|
+
raise JavaError.new(cmd + "\n" + print_params.to_json, errors)
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
# handler for sending custom report file, e.g. to customize filename depending on params
|
455
|
+
# override in descendant classes
|
456
|
+
def send_custom_report(report, print_params, path, type, filename)
|
457
|
+
send_file path, :type => type, :disposition => 'attachment', :filename => filename
|
261
458
|
end
|
262
459
|
|
263
460
|
def cleanupTempFiles
|
@@ -271,58 +468,100 @@ class PrintController < ApplicationController
|
|
271
468
|
end
|
272
469
|
end
|
273
470
|
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
471
|
+
# convert Mapfish Print v2 request params to v3
|
472
|
+
# NOTE: v2 can be used directly (with -v2), but does not support multiple maps
|
473
|
+
# see also mapfish-print/core/src/main/java/org/mapfish/print/servlet/oldapi/OldAPIRequestConverter.java
|
474
|
+
def convert_mapfish_v2_params(print_v2_params)
|
475
|
+
print_params = {
|
476
|
+
'attributes' => {}
|
477
|
+
}
|
478
|
+
|
479
|
+
# report
|
480
|
+
['layout', 'outputFormat'].each do |k|
|
481
|
+
print_params[k] = print_v2_params[k] if print_v2_params.has_key?(k)
|
482
|
+
end
|
278
483
|
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
484
|
+
# map
|
485
|
+
map = {}
|
486
|
+
map['dpi'] = print_v2_params['dpi'] if print_v2_params.has_key?('dpi')
|
487
|
+
map['projection'] = print_v2_params['srs'] if print_v2_params.has_key?('srs')
|
488
|
+
|
489
|
+
page_map_params = ['center', 'scale', 'rotation']
|
490
|
+
print_v2_params['pages'].each do |page|
|
491
|
+
if page.has_key?('center')
|
492
|
+
map['center'] = page['center']
|
493
|
+
# add text param for center
|
494
|
+
print_params['attributes']['center_text'] = page['center']
|
495
|
+
end
|
496
|
+
if page.has_key?('scale')
|
497
|
+
map['scale'] = page['scale']
|
498
|
+
# add text param for scale
|
499
|
+
print_params['attributes']['scale_text'] = page['scale']
|
500
|
+
end
|
501
|
+
map['rotation'] = -page['rotation'] if page.has_key?('rotation')
|
502
|
+
|
503
|
+
# custom params from page
|
504
|
+
page.each do |k, v|
|
505
|
+
print_params['attributes'][k] = v unless page_map_params.include?(k)
|
290
506
|
end
|
291
|
-
rescue => err
|
292
|
-
logger.info("#{err.class}: #{err.message}")
|
293
|
-
render :nothing => true, :status => 500
|
294
|
-
return
|
295
507
|
end
|
296
|
-
#send_data response.body, :status => response.code, :type=>'application/x-pdf', :disposition=>'attachment', :filename=>'map.pdf'
|
297
|
-
tempId = SecureRandom.random_number(2**31)
|
298
|
-
temp = TMP_PREFIX + tempId.to_s + TMP_SUFFIX
|
299
|
-
File.open(temp, 'wb') {|f| f.write(response.body) }
|
300
|
-
convert_and_send_link(temp, tempId, request.parameters["dpi"], request.parameters["outputFormat"])
|
301
|
-
end
|
302
508
|
|
303
|
-
|
304
|
-
|
305
|
-
|
509
|
+
# layers
|
510
|
+
map['layers'] = []
|
511
|
+
if print_v2_params.has_key?('layers')
|
512
|
+
print_v2_params['layers'].reverse.each do |v2_layer|
|
513
|
+
layer = {}
|
514
|
+
|
515
|
+
case v2_layer['type'].downcase
|
516
|
+
when "wms"
|
517
|
+
# WMS
|
518
|
+
layer['type'] = 'wms'
|
519
|
+
['customParams', 'imageFormat', 'name', 'layers', 'opacity', 'mergeableParams', 'baseURL', 'styles', 'rasterStyle', 'failOnError', 'useNativeAngle', 'serverType', 'version'].each do |k|
|
520
|
+
layer[k] = v2_layer[k] if v2_layer.has_key?(k)
|
521
|
+
end
|
522
|
+
layer['imageFormat'] = v2_layer['format'] if v2_layer.has_key?('format')
|
523
|
+
when "vector"
|
524
|
+
# vector
|
525
|
+
layer['type'] = 'geojson'
|
526
|
+
['style', 'name', 'opacity', 'renderAsSvg', 'failOnError', 'geoJson'].each do |k|
|
527
|
+
layer[k] = v2_layer[k] if v2_layer.has_key?(k)
|
528
|
+
end
|
529
|
+
if v2_layer.has_key?('styles')
|
530
|
+
layer['style'] = v2_layer['styles']
|
531
|
+
layer['style'].each do |k, v|
|
532
|
+
if v.has_key?('label')
|
533
|
+
# set default font
|
534
|
+
v['fontFamily'] = 'sans-serif' unless v.has_key?('fontFamily')
|
535
|
+
v['fontSize'] = '12px' unless v.has_key?('fontSize')
|
536
|
+
end
|
537
|
+
end
|
538
|
+
layer['style']['styleProperty'] = v2_layer['styleProperty'] if v2_layer.has_key?('styleProperty')
|
539
|
+
layer['style']['version'] = 1
|
540
|
+
end
|
541
|
+
else
|
542
|
+
logger.info "Layer type not supported: #{v2_layer.to_yaml}"
|
543
|
+
next
|
544
|
+
end
|
306
545
|
|
307
|
-
|
308
|
-
|
309
|
-
pdf = Magick::Image.read(temp_pdf) { self.density = dpi }.first
|
310
|
-
temp_suffix = ".#{output_format}"
|
311
|
-
temp_img = TMP_PREFIX + temp_id.to_s + temp_suffix
|
312
|
-
pdf.write(temp_img)
|
313
|
-
File.delete(temp_pdf)
|
546
|
+
map['layers'] << layer
|
547
|
+
end
|
314
548
|
end
|
315
549
|
|
316
|
-
|
317
|
-
|
318
|
-
|
550
|
+
print_params['attributes']['map'] = map
|
551
|
+
|
552
|
+
# custom params
|
553
|
+
non_custom_params = ['layout', 'outputFormat', 'units', 'srs', 'dpi', 'layers', 'pages']
|
554
|
+
print_v2_params.each do |k, v|
|
555
|
+
unless non_custom_params.include?(k)
|
556
|
+
print_params['attributes'][k] = v
|
319
557
|
end
|
320
558
|
end
|
559
|
+
|
560
|
+
print_params
|
321
561
|
end
|
322
562
|
|
323
563
|
# forward to JasperReport
|
324
|
-
def create_report(request)
|
325
|
-
report = request.parameters["report"]
|
564
|
+
def create_report(report, request)
|
326
565
|
call_params = {
|
327
566
|
:j_username => JASPER_USER,
|
328
567
|
:j_password => JASPER_PASSWORD
|
@@ -356,18 +595,16 @@ class PrintController < ApplicationController
|
|
356
595
|
end
|
357
596
|
|
358
597
|
#Mapfish print compatible report delivery
|
359
|
-
def call_report(request)
|
360
|
-
result = create_report(request)
|
598
|
+
def call_report(report, request)
|
599
|
+
result = create_report(report, request)
|
361
600
|
if result.nil?
|
362
601
|
render :nothing => true, :status => 500
|
363
|
-
|
364
|
-
end
|
365
|
-
|
366
|
-
if result.kind_of? Net::HTTPSuccess
|
602
|
+
elsif result.kind_of? Net::HTTPSuccess
|
367
603
|
temp_id = SecureRandom.random_number(2**31)
|
368
604
|
temp = TMP_PREFIX + temp_id.to_s + TMP_SUFFIX
|
369
605
|
File.open(temp, 'wb') {|f| f.write(result.body) }
|
370
606
|
|
607
|
+
# send link to print result
|
371
608
|
render :json=>{ 'getURL' => url_for(:action=> 'show', :id=> temp_id) + ".pdf" }
|
372
609
|
else
|
373
610
|
logger.info "#{result.code}: #{result.body}"
|
@@ -375,4 +612,16 @@ class PrintController < ApplicationController
|
|
375
612
|
end
|
376
613
|
end
|
377
614
|
|
615
|
+
def create_and_send_jasper_report(report, request, type, filename)
|
616
|
+
result = create_report(report, request)
|
617
|
+
if result.nil?
|
618
|
+
render :nothing => true, :status => 500
|
619
|
+
elsif result.kind_of? Net::HTTPSuccess
|
620
|
+
send_data result.body, :type => type, :disposition => 'attachment', :filename => filename
|
621
|
+
else
|
622
|
+
logger.info "#{result.code}: #{result.body}"
|
623
|
+
render :nothing => true, :status => result.code
|
624
|
+
end
|
625
|
+
end
|
626
|
+
|
378
627
|
end
|
@@ -80,15 +80,17 @@ MAPSERV_CGI_URL = '/cgi-bin/mapserv'
|
|
80
80
|
MAPPATH = '#{Rails.root}/mapconfig'
|
81
81
|
|
82
82
|
#Internal URL of print servlet (nil: print-standalone)
|
83
|
-
PRINT_URL = nil #'http://localhost:8080/print
|
83
|
+
PRINT_URL = nil #'http://localhost:8080/mapfish_print/print/myapp'
|
84
|
+
#path to standalone Mapfish Print JARs (if PRINT_URL = nil)
|
85
|
+
# PRINT_STANDALONE_JARS = '$PATH_TO/mapfish-print/core/lib/*'
|
84
86
|
}
|
85
87
|
%w[development test production].each do |env|
|
86
88
|
append_to_file("config/environments/#{env}.rb", env_config)
|
87
89
|
end
|
88
90
|
end
|
89
91
|
|
90
|
-
def
|
91
|
-
|
92
|
+
def copy_print_configs
|
93
|
+
directory "print", "print"
|
92
94
|
end
|
93
95
|
|
94
96
|
def setup_mapconfig
|
@@ -22,6 +22,10 @@ LOCAL_WMS = [
|
|
22
22
|
#NOTE: use a shared directory for multi-node setups (e.g. NFS)
|
23
23
|
PRINT_TMP_PATH = "/tmp"
|
24
24
|
|
25
|
+
# scales and dpis for printing (optional)
|
26
|
+
#PRINT_SCALES = [500, 1000, 2500, 5000, 10000, 15000, 25000, 50000, 100000, 200000, 500000]
|
27
|
+
#PRINT_DPIS = [150, 300]
|
28
|
+
|
25
29
|
DEFAULT_TOPIC = {
|
26
30
|
SITE_DEFAULT => (Topic.first rescue nil) #Topic.where(:name => 'MainMap').first
|
27
31
|
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!-- Created with Jaspersoft Studio version 6.1.0.final using JasperReports Library version 6.1.0 -->
|
3
|
+
<!-- 2015-12-02T11:19:59 -->
|
4
|
+
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="A4_portrait" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="cbdda6e8-753d-45cb-8017-b2a469eecfe4">
|
5
|
+
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
|
6
|
+
<parameter name="map_title" class="java.lang.String"/>
|
7
|
+
<parameter name="mapSubReport" class="java.lang.String" isForPrompting="false"/>
|
8
|
+
<parameter name="scalebarSubReport" class="java.lang.String" isForPrompting="false"/>
|
9
|
+
<queryString>
|
10
|
+
<![CDATA[]]>
|
11
|
+
</queryString>
|
12
|
+
<title>
|
13
|
+
<band height="50" splitType="Stretch">
|
14
|
+
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
|
15
|
+
<textField>
|
16
|
+
<reportElement x="0" y="0" width="280" height="30" uuid="0b8cc9a6-5320-419d-876a-9b0f83512251"/>
|
17
|
+
<textElement>
|
18
|
+
<font size="20"/>
|
19
|
+
</textElement>
|
20
|
+
<textFieldExpression><![CDATA[$P{map_title}]]></textFieldExpression>
|
21
|
+
</textField>
|
22
|
+
</band>
|
23
|
+
</title>
|
24
|
+
<detail>
|
25
|
+
<band height="680" splitType="Stretch">
|
26
|
+
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
|
27
|
+
<subreport>
|
28
|
+
<reportElement x="0" y="0" width="555" height="680" uuid="5e5015ee-5bc7-4c22-bc1d-11b41ada327e"/>
|
29
|
+
<subreportExpression><![CDATA[$P{mapSubReport}]]></subreportExpression>
|
30
|
+
</subreport>
|
31
|
+
</band>
|
32
|
+
</detail>
|
33
|
+
<pageFooter>
|
34
|
+
<band height="50" splitType="Stretch">
|
35
|
+
<subreport>
|
36
|
+
<reportElement x="435" y="0" width="120" height="20" uuid="3472f694-cbf8-4e07-9964-099c5f0a3043"/>
|
37
|
+
<subreportExpression><![CDATA[$P{scalebarSubReport}]]></subreportExpression>
|
38
|
+
</subreport>
|
39
|
+
</band>
|
40
|
+
</pageFooter>
|
41
|
+
</jasperReport>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Mapfish Print v3
|
2
|
+
throwErrorOnExtraParameters: true
|
3
|
+
|
4
|
+
templates:
|
5
|
+
|
6
|
+
#===========================================================================
|
7
|
+
A4 portrait: !template
|
8
|
+
#===========================================================================
|
9
|
+
reportTemplate: A4_portrait.jrxml
|
10
|
+
attributes:
|
11
|
+
map_title: !string {default: "Map Title"}
|
12
|
+
map: !map
|
13
|
+
width: 555
|
14
|
+
height: 680
|
15
|
+
maxDpi: 300
|
16
|
+
dpiSuggestions: [150, 300]
|
17
|
+
scalebar: !scalebar
|
18
|
+
width: 120
|
19
|
+
height: 20
|
20
|
+
processors:
|
21
|
+
- !reportBuilder
|
22
|
+
directory: "."
|
23
|
+
- !createMap {}
|
24
|
+
- !createScalebar {}
|
@@ -44,4 +44,6 @@ MAPSERV_CGI_URL = '/cgi-bin/mapserv'
|
|
44
44
|
MAPPATH = '/home/pi/code/rails/gb_mapfish_appserver/test/dummy/mapconfig'
|
45
45
|
|
46
46
|
#Internal URL of print servlet (nil: print-standalone)
|
47
|
-
PRINT_URL = nil #'http://localhost:8080/print
|
47
|
+
PRINT_URL = nil #'http://localhost:8080/mapfish_print/print/myapp'
|
48
|
+
#path to standalone Mapfish Print JARs (if PRINT_URL = nil)
|
49
|
+
# PRINT_STANDALONE_JARS = '$PATH_TO/mapfish-print/core/lib/*'
|
@@ -74,4 +74,4 @@ MAPSERV_CGI_URL = '/cgi-bin/mapserv'
|
|
74
74
|
MAPPATH = '/home/pi/code/rails/dummy/mapconfig'
|
75
75
|
|
76
76
|
#Internal URL of print servlet (nil: print-standalone)
|
77
|
-
PRINT_URL = nil #'http://localhost:8080/print
|
77
|
+
PRINT_URL = nil #'http://localhost:8080/mapfish_print/print/myapp'
|
@@ -44,4 +44,4 @@ MAPSERV_CGI_URL = '/cgi-bin/mapserv'
|
|
44
44
|
MAPPATH = '/home/pi/code/rails/dummy/mapconfig'
|
45
45
|
|
46
46
|
#Internal URL of print servlet (nil: print-standalone)
|
47
|
-
PRINT_URL = nil #'http://localhost:8080/print
|
47
|
+
PRINT_URL = nil #'http://localhost:8080/mapfish_print/print/myapp'
|
@@ -22,6 +22,10 @@ LOCAL_WMS = [
|
|
22
22
|
#NOTE: use a shared directory for multi-node setups (e.g. NFS)
|
23
23
|
PRINT_TMP_PATH = "/tmp"
|
24
24
|
|
25
|
+
# scales and dpis for printing (optional)
|
26
|
+
#PRINT_SCALES = [500, 1000, 2500, 5000, 10000, 15000, 25000, 50000, 100000, 200000, 500000]
|
27
|
+
#PRINT_DPIS = [150, 300]
|
28
|
+
|
25
29
|
DEFAULT_TOPIC = {
|
26
30
|
SITE_DEFAULT => (Topic.first rescue nil) #Topic.where(:name => 'MainMap').first
|
27
31
|
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!-- Created with Jaspersoft Studio version 6.1.0.final using JasperReports Library version 6.1.0 -->
|
3
|
+
<!-- 2015-12-02T11:19:59 -->
|
4
|
+
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="A4_portrait" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="cbdda6e8-753d-45cb-8017-b2a469eecfe4">
|
5
|
+
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
|
6
|
+
<parameter name="map_title" class="java.lang.String"/>
|
7
|
+
<parameter name="mapSubReport" class="java.lang.String" isForPrompting="false"/>
|
8
|
+
<parameter name="scalebarSubReport" class="java.lang.String" isForPrompting="false"/>
|
9
|
+
<queryString>
|
10
|
+
<![CDATA[]]>
|
11
|
+
</queryString>
|
12
|
+
<title>
|
13
|
+
<band height="50" splitType="Stretch">
|
14
|
+
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
|
15
|
+
<textField>
|
16
|
+
<reportElement x="0" y="0" width="280" height="30" uuid="0b8cc9a6-5320-419d-876a-9b0f83512251"/>
|
17
|
+
<textElement>
|
18
|
+
<font size="20"/>
|
19
|
+
</textElement>
|
20
|
+
<textFieldExpression><![CDATA[$P{map_title}]]></textFieldExpression>
|
21
|
+
</textField>
|
22
|
+
</band>
|
23
|
+
</title>
|
24
|
+
<detail>
|
25
|
+
<band height="680" splitType="Stretch">
|
26
|
+
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
|
27
|
+
<subreport>
|
28
|
+
<reportElement x="0" y="0" width="555" height="680" uuid="5e5015ee-5bc7-4c22-bc1d-11b41ada327e"/>
|
29
|
+
<subreportExpression><![CDATA[$P{mapSubReport}]]></subreportExpression>
|
30
|
+
</subreport>
|
31
|
+
</band>
|
32
|
+
</detail>
|
33
|
+
<pageFooter>
|
34
|
+
<band height="50" splitType="Stretch">
|
35
|
+
<subreport>
|
36
|
+
<reportElement x="435" y="0" width="120" height="20" uuid="3472f694-cbf8-4e07-9964-099c5f0a3043"/>
|
37
|
+
<subreportExpression><![CDATA[$P{scalebarSubReport}]]></subreportExpression>
|
38
|
+
</subreport>
|
39
|
+
</band>
|
40
|
+
</pageFooter>
|
41
|
+
</jasperReport>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Mapfish Print v3
|
2
|
+
throwErrorOnExtraParameters: true
|
3
|
+
|
4
|
+
templates:
|
5
|
+
|
6
|
+
#===========================================================================
|
7
|
+
A4 portrait: !template
|
8
|
+
#===========================================================================
|
9
|
+
reportTemplate: A4_portrait.jrxml
|
10
|
+
attributes:
|
11
|
+
map_title: !string {default: "Map Title"}
|
12
|
+
map: !map
|
13
|
+
width: 555
|
14
|
+
height: 680
|
15
|
+
maxDpi: 300
|
16
|
+
dpiSuggestions: [150, 300]
|
17
|
+
scalebar: !scalebar
|
18
|
+
width: 120
|
19
|
+
height: 20
|
20
|
+
processors:
|
21
|
+
- !reportBuilder
|
22
|
+
directory: "."
|
23
|
+
- !createMap {}
|
24
|
+
- !createScalebar {}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gb_mapfish_appserver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pirmin Kalberer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -327,7 +327,8 @@ files:
|
|
327
327
|
- lib/generators/mapfish/install/install_generator.rb
|
328
328
|
- lib/generators/mapfish/install/templates/geodatabase.yml
|
329
329
|
- lib/generators/mapfish/install/templates/initializer.rb
|
330
|
-
- lib/generators/mapfish/install/templates/print.
|
330
|
+
- lib/generators/mapfish/install/templates/print/A4_portrait.jrxml
|
331
|
+
- lib/generators/mapfish/install/templates/print/config.yaml
|
331
332
|
- lib/generators/mapfish/install/templates/search_rules.rb
|
332
333
|
- lib/generators/mapfish/viewer/templates/viewer.html.erb
|
333
334
|
- lib/generators/mapfish/viewer/viewer_generator.rb
|
@@ -375,7 +376,6 @@ files:
|
|
375
376
|
- test/dummy/config/initializers/session_store.rb
|
376
377
|
- test/dummy/config/initializers/wrap_parameters.rb
|
377
378
|
- test/dummy/config/locales/en.yml
|
378
|
-
- test/dummy/config/print.yml
|
379
379
|
- test/dummy/config/routes.rb
|
380
380
|
- test/dummy/db/migrate/20131120103839_setup_mapfish_tables.mapfish.rb
|
381
381
|
- test/dummy/db/schema.rb
|
@@ -391,6 +391,8 @@ files:
|
|
391
391
|
- test/dummy/mapconfig/maps.example.com/cascadingwms.map
|
392
392
|
- test/dummy/mapconfig/maps.example.com/connection.inc.example
|
393
393
|
- test/dummy/mapconfig/maps.example.com/naturalearth.map
|
394
|
+
- test/dummy/print/A4_portrait.jrxml
|
395
|
+
- test/dummy/print/config.yaml
|
394
396
|
- test/dummy/public/404.html
|
395
397
|
- test/dummy/public/422.html
|
396
398
|
- test/dummy/public/500.html
|
@@ -527,7 +529,6 @@ test_files:
|
|
527
529
|
- test/dummy/config/initializers/session_store.rb
|
528
530
|
- test/dummy/config/initializers/wrap_parameters.rb
|
529
531
|
- test/dummy/config/locales/en.yml
|
530
|
-
- test/dummy/config/print.yml
|
531
532
|
- test/dummy/config/routes.rb
|
532
533
|
- test/dummy/db/migrate/20131120103839_setup_mapfish_tables.mapfish.rb
|
533
534
|
- test/dummy/db/schema.rb
|
@@ -543,6 +544,8 @@ test_files:
|
|
543
544
|
- test/dummy/mapconfig/maps.example.com/cascadingwms.map
|
544
545
|
- test/dummy/mapconfig/maps.example.com/connection.inc.example
|
545
546
|
- test/dummy/mapconfig/maps.example.com/naturalearth.map
|
547
|
+
- test/dummy/print/A4_portrait.jrxml
|
548
|
+
- test/dummy/print/config.yaml
|
546
549
|
- test/dummy/public/404.html
|
547
550
|
- test/dummy/public/422.html
|
548
551
|
- test/dummy/public/500.html
|
@@ -1,76 +0,0 @@
|
|
1
|
-
#===========================================================================
|
2
|
-
# allowed DPIs
|
3
|
-
#===========================================================================
|
4
|
-
dpis:
|
5
|
-
- 254
|
6
|
-
- 190
|
7
|
-
# - 127
|
8
|
-
# - 56
|
9
|
-
|
10
|
-
#===========================================================================
|
11
|
-
# the allowed scales
|
12
|
-
#===========================================================================
|
13
|
-
scales:
|
14
|
-
- 25000
|
15
|
-
- 50000
|
16
|
-
- 100000
|
17
|
-
- 200000
|
18
|
-
- 500000
|
19
|
-
- 1000000
|
20
|
-
- 2000000
|
21
|
-
- 4000000
|
22
|
-
- 8000000
|
23
|
-
- 16000000
|
24
|
-
- 32000000
|
25
|
-
- 64000000
|
26
|
-
|
27
|
-
#===========================================================================
|
28
|
-
# the list of allowed hosts
|
29
|
-
#===========================================================================
|
30
|
-
|
31
|
-
hosts:
|
32
|
-
- !localMatch
|
33
|
-
dummy: true
|
34
|
-
- !ipMatch
|
35
|
-
ip: demo.mapfish.org
|
36
|
-
- !dnsMatch
|
37
|
-
host: labs.metacarta.com
|
38
|
-
port: 80
|
39
|
-
|
40
|
-
|
41
|
-
layouts:
|
42
|
-
#===========================================================================
|
43
|
-
A4 portrait:
|
44
|
-
#===========================================================================
|
45
|
-
mainPage:
|
46
|
-
rotation: true
|
47
|
-
pageSize: A4
|
48
|
-
header:
|
49
|
-
height: 50
|
50
|
-
items:
|
51
|
-
- !text
|
52
|
-
font: Helvetica
|
53
|
-
fontSize: 30
|
54
|
-
align: right
|
55
|
-
text: 'hello first print'
|
56
|
-
items:
|
57
|
-
- !map
|
58
|
-
spacingAfter: 30
|
59
|
-
width: 440
|
60
|
-
height: 483
|
61
|
-
- !text
|
62
|
-
text: 'blablabla'
|
63
|
-
spacingAfter: 30
|
64
|
-
footer:
|
65
|
-
height: 30
|
66
|
-
items:
|
67
|
-
- !columns
|
68
|
-
items:
|
69
|
-
- !text
|
70
|
-
backgroundColor: #FF0000
|
71
|
-
align: left
|
72
|
-
text: little test
|
73
|
-
- !text
|
74
|
-
align: right
|
75
|
-
text: 'Page ${pageNum}'
|
76
|
-
|
data/test/dummy/config/print.yml
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
#===========================================================================
|
2
|
-
# allowed DPIs
|
3
|
-
#===========================================================================
|
4
|
-
dpis:
|
5
|
-
- 254
|
6
|
-
- 190
|
7
|
-
# - 127
|
8
|
-
# - 56
|
9
|
-
|
10
|
-
#===========================================================================
|
11
|
-
# the allowed scales
|
12
|
-
#===========================================================================
|
13
|
-
scales:
|
14
|
-
- 25000
|
15
|
-
- 50000
|
16
|
-
- 100000
|
17
|
-
- 200000
|
18
|
-
- 500000
|
19
|
-
- 1000000
|
20
|
-
- 2000000
|
21
|
-
- 4000000
|
22
|
-
- 8000000
|
23
|
-
- 16000000
|
24
|
-
- 32000000
|
25
|
-
- 64000000
|
26
|
-
|
27
|
-
#===========================================================================
|
28
|
-
# the list of allowed hosts
|
29
|
-
#===========================================================================
|
30
|
-
|
31
|
-
hosts:
|
32
|
-
- !localMatch
|
33
|
-
dummy: true
|
34
|
-
- !ipMatch
|
35
|
-
ip: demo.mapfish.org
|
36
|
-
- !dnsMatch
|
37
|
-
host: labs.metacarta.com
|
38
|
-
port: 80
|
39
|
-
|
40
|
-
|
41
|
-
layouts:
|
42
|
-
#===========================================================================
|
43
|
-
A4 portrait:
|
44
|
-
#===========================================================================
|
45
|
-
mainPage:
|
46
|
-
rotation: true
|
47
|
-
pageSize: A4
|
48
|
-
header:
|
49
|
-
height: 50
|
50
|
-
items:
|
51
|
-
- !text
|
52
|
-
font: Helvetica
|
53
|
-
fontSize: 30
|
54
|
-
align: right
|
55
|
-
text: 'hello first print'
|
56
|
-
items:
|
57
|
-
- !map
|
58
|
-
spacingAfter: 30
|
59
|
-
width: 440
|
60
|
-
height: 483
|
61
|
-
- !text
|
62
|
-
text: 'blablabla'
|
63
|
-
spacingAfter: 30
|
64
|
-
footer:
|
65
|
-
height: 30
|
66
|
-
items:
|
67
|
-
- !columns
|
68
|
-
items:
|
69
|
-
- !text
|
70
|
-
backgroundColor: #FF0000
|
71
|
-
align: left
|
72
|
-
text: little test
|
73
|
-
- !text
|
74
|
-
align: right
|
75
|
-
text: 'Page ${pageNum}'
|
76
|
-
|