sogoumap2pdf 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Manifest.txt +1 -0
- data/TODO +1 -0
- data/bin/sogoumap2pdf_from_disk_front_page +59 -0
- data/lib/sogoumap2pdf/image_to_pdf.rb +94 -6
- data/lib/sogoumap2pdf/version.rb +1 -1
- data/website/index.html +2 -2
- metadata +4 -2
data/Manifest.txt
CHANGED
data/TODO
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created on 2008-8-19.
|
4
|
+
# Copyright (c) 2008. All rights reserved.
|
5
|
+
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
rescue LoadError
|
9
|
+
# no rubygems to load, so we fail silently
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'optparse'
|
13
|
+
require 'sogoumap2pdf'
|
14
|
+
include Sogoumap2pdf
|
15
|
+
# NOTE: the option -p/--path= is given as an example, and should probably be replaced in your application.
|
16
|
+
|
17
|
+
OPTIONS = {
|
18
|
+
:path => '~'
|
19
|
+
}
|
20
|
+
MANDATORY_OPTIONS = %w( )
|
21
|
+
|
22
|
+
parser = OptionParser.new do |opts|
|
23
|
+
opts.banner = <<BANNER
|
24
|
+
This application is wonderful because...
|
25
|
+
|
26
|
+
Usage: #{File.basename($0)} [options]
|
27
|
+
|
28
|
+
Options are:
|
29
|
+
BANNER
|
30
|
+
opts.separator ""
|
31
|
+
opts.on("-p", "--path=PATH", String,
|
32
|
+
"The root path for selecting files",
|
33
|
+
"Default: ~") { |OPTIONS[:path]| }
|
34
|
+
opts.on("-h", "--help",
|
35
|
+
"Show this help message.") { puts opts; exit }
|
36
|
+
opts.parse!(ARGV)
|
37
|
+
|
38
|
+
if MANDATORY_OPTIONS && MANDATORY_OPTIONS.find { |option| OPTIONS[option.to_sym].nil? }
|
39
|
+
puts opts; exit
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
path = OPTIONS[:path]
|
44
|
+
|
45
|
+
# do stuff
|
46
|
+
#
|
47
|
+
# guangzhou: ruby map2pdf.rb http://hbpic3.go2map.com/seamless/0/180/792/504/105/100899_21033.JPG 0 0 30 30 guangzhou.pdf sp
|
48
|
+
# guangzhou: ruby map2pdf.rb http://hbpic3.go2map.com/seamless/0/180/792/504/105/100899_21033.JPG 0x0 30x30 guangzhou.pdf sp
|
49
|
+
link=ARGV[0]
|
50
|
+
option=ARGV[4]
|
51
|
+
x,y=ARGV[1].split("x")
|
52
|
+
r,c=ARGV[2].split("x")
|
53
|
+
g=SogouMapImage.new(link, option)
|
54
|
+
gmpdf=ImageToPdf.new(".JPG",x,y)
|
55
|
+
xres, yres = gmpdf.perfect_fit(x.to_i,y.to_i,r.to_i,c.to_i)
|
56
|
+
g.fill_map(xres,yres)
|
57
|
+
gmpdf.front_page_only(g)
|
58
|
+
#gmpdf.create_pages(g)
|
59
|
+
gmpdf.save(ARGV[3])
|
@@ -101,7 +101,7 @@ module Sogoumap2pdf
|
|
101
101
|
|
102
102
|
# pgimg=big_image.crop(j*(@page_width-@page_overlap),
|
103
103
|
# i*(@page_height-@page_overlap),@page_width,@page_height,true)
|
104
|
-
pgimg.write("itptmp#{@link_end}") { self.quality =
|
104
|
+
pgimg.write("itptmp#{@link_end}") { self.quality = 100 }
|
105
105
|
@pdf.add_image_from_file("itptmp#{@link_end}",0,0)
|
106
106
|
ss = PDF::Writer::StrokeStyle.new(4,:cap=>:round)
|
107
107
|
@pdf.stroke_style ss
|
@@ -192,11 +192,16 @@ module Sogoumap2pdf
|
|
192
192
|
end
|
193
193
|
#crop
|
194
194
|
#map2pdf.rb:339:in `crop!': bignum too big to convert into `long' (RangeError)
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
195
|
+
resx=@tumb_x*g.npx
|
196
|
+
resy=@tumb_y*g.npy
|
197
|
+
|
198
|
+
p "front_page size"
|
199
|
+
p resx
|
200
|
+
p resy
|
201
|
+
resx=@page_width if resx>@page_width
|
202
|
+
resy=@page_height if resy>@page_height
|
203
|
+
resimg.crop!(SouthWestGravity,resx,resy)
|
204
|
+
resimg.write("itptmp#{@link_end}"){ self.quality = 100 }
|
200
205
|
@pdf.add_image_from_file("itptmp#{@link_end}",0,0)
|
201
206
|
ss = PDF::Writer::StrokeStyle.new(2)
|
202
207
|
@pdf.stroke_style ss
|
@@ -218,6 +223,89 @@ module Sogoumap2pdf
|
|
218
223
|
end
|
219
224
|
end
|
220
225
|
end
|
226
|
+
def front_page_only(g)
|
227
|
+
size_x=@big_img_width
|
228
|
+
size_y=@big_img_height
|
229
|
+
# calculate the number of requred rows and columns
|
230
|
+
cols=(size_x-@page_overlap)/(@page_width-@page_overlap)
|
231
|
+
rows=(size_y-@page_overlap)/(@page_height-@page_overlap)
|
232
|
+
|
233
|
+
ci=ImageList.new # image list to hold results
|
234
|
+
page=Rectangle.new( 0, 0, 0, 0)
|
235
|
+
@g=g
|
236
|
+
for i in 0... g.npx
|
237
|
+
p "resizing #{i} j"
|
238
|
+
for j in 0...g.npy
|
239
|
+
picture_file_name="~/.sogoumap/0/"+ [g.resource_type,g.resource_level,((g.start_link_x+i)/200).to_s,((g.start_link_y+j)/200).to_s].join("/")+"/"+(g.start_link_x+i).to_s+"_"+(g.start_link_y+j).to_s+g.link_end
|
240
|
+
picture_file_name=File.expand_path(picture_file_name)
|
241
|
+
if File.exist?(picture_file_name) && File.size(picture_file_name)!= 0 then
|
242
|
+
tumb=ImageList.new.read(picture_file_name)[0] # image list to hold results
|
243
|
+
|
244
|
+
path_file_name="~/.sogoumap/0/"+ ["179",g.resource_level,((g.start_link_x+i)/200).to_s,((g.start_link_y+j)/200).to_s].join("/")+"/"+(g.start_link_x+i).to_s+"_"+(g.start_link_y+j).to_s+".PNG"
|
245
|
+
path_file_name=File.expand_path(path_file_name)
|
246
|
+
if g.satellite_path && File.exist?(path_file_name) && File.size(path_file_name)!=0 then
|
247
|
+
path_tumb=ImageList.new.read(path_file_name)[0] # image list to hold results
|
248
|
+
tumb.composite!(path_tumb, 0, 0, OverCompositeOp)
|
249
|
+
end
|
250
|
+
#resize each to tumb
|
251
|
+
tumb.resize!(@tumb_x,@tumb_y)
|
252
|
+
#append tumb
|
253
|
+
ci << tumb
|
254
|
+
#update page
|
255
|
+
page.x=i*@tumb_x
|
256
|
+
page.y=(g.npy-1-j)*@tumb_y
|
257
|
+
ci.page=page
|
258
|
+
else
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
#mosaic
|
263
|
+
if ci.length==0 then
|
264
|
+
p "@tumb_x,@tumb_y"
|
265
|
+
p @tumb_x
|
266
|
+
p @tumb_y
|
267
|
+
p "g.npx,g.npy"
|
268
|
+
p g.npx
|
269
|
+
p g.npy
|
270
|
+
p "#{g.npx*@tumb_x}x#{g.npy*@tumb_y}"
|
271
|
+
## can't work
|
272
|
+
resimg=ImageList.new.read("null:white") { self.size = "#{g.npx.to_i*@tumb_x.to_i}x#{g.npy.to_i*@tumb_y.to_i}"}
|
273
|
+
else
|
274
|
+
resimg=ci.mosaic
|
275
|
+
end
|
276
|
+
#crop
|
277
|
+
#map2pdf.rb:339:in `crop!': bignum too big to convert into `long' (RangeError)
|
278
|
+
resx=@tumb_x*g.npx
|
279
|
+
resy=@tumb_y*g.npy
|
280
|
+
p "front_page size"
|
281
|
+
p resx
|
282
|
+
p resy
|
283
|
+
resx=@page_width if resx>@page_width
|
284
|
+
resy=@page_height if resy>@page_height
|
285
|
+
resimg.crop!(SouthWestGravity,resx,resy)
|
286
|
+
resimg.write("itptmp#{@link_end}"){ self.quality = 100 }
|
287
|
+
@pdf.add_image_from_file("itptmp#{@link_end}",0,0)
|
288
|
+
ss = PDF::Writer::StrokeStyle.new(2)
|
289
|
+
@pdf.stroke_style ss
|
290
|
+
for i in 1...cols
|
291
|
+
@pdf.line(i*@page_width/cols,0,
|
292
|
+
i*@page_width/cols,@page_height).stroke
|
293
|
+
end
|
294
|
+
for i in 1...rows
|
295
|
+
@pdf.line(0,i*@page_height/rows,
|
296
|
+
@page_width,i*@page_height/rows).stroke
|
297
|
+
end
|
298
|
+
# for i in 0...rows
|
299
|
+
# for j in 0...cols
|
300
|
+
# p "adding #{i} #{j} link in front page"
|
301
|
+
# p Time.now
|
302
|
+
# @pdf.add_internal_link("map part #{i},#{j}",
|
303
|
+
# j*@page_width/cols, @page_height-i*@page_height/rows,
|
304
|
+
# (j+1)*@page_width/cols, @page_height-(i+1)*@page_height/rows)
|
305
|
+
# end
|
306
|
+
# end
|
307
|
+
end
|
308
|
+
|
221
309
|
def save(save_file)
|
222
310
|
@pdf.save_as(save_file)
|
223
311
|
end
|
data/lib/sogoumap2pdf/version.rb
CHANGED
data/website/index.html
CHANGED
@@ -35,7 +35,7 @@
|
|
35
35
|
<h1>sogoumap2pdf</h1>
|
36
36
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sogoumap2pdf"; return false'>
|
37
37
|
<p>Get Version</p>
|
38
|
-
<a href="http://rubyforge.org/projects/sogoumap2pdf" class="numbers">0.0
|
38
|
+
<a href="http://rubyforge.org/projects/sogoumap2pdf" class="numbers">0.1.0</a>
|
39
39
|
</div>
|
40
40
|
<h2>What</h2>
|
41
41
|
<p>download map from map.sogou.com and convert to pdf</p>
|
@@ -75,7 +75,7 @@ rake install_gem</pre>
|
|
75
75
|
<h2>Screencast</h2>
|
76
76
|
<object width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/SxEZ1lhUDH4"> </param> <embed src="http://www.youtube.com/v/SxEZ1lhUDH4" type="application/x-shockwave-flash" width="425" height="350"> </embed> </object>
|
77
77
|
<p class="coda">
|
78
|
-
<a href="mailto:ruanwz@gmail.com">David Ruan</a>,
|
78
|
+
<a href="mailto:ruanwz@gmail.com">David Ruan</a>, 9th September 2008<br>
|
79
79
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
80
80
|
</p>
|
81
81
|
</div>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sogoumap2pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Ruan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-09-
|
12
|
+
date: 2008-09-11 00:00:00 +08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -49,6 +49,7 @@ executables:
|
|
49
49
|
- sogoumap2pdf
|
50
50
|
- sogoumap2disk
|
51
51
|
- sogoumap2pdf_from_disk
|
52
|
+
- sogoumap2pdf_from_disk_front_page
|
52
53
|
extensions: []
|
53
54
|
|
54
55
|
extra_rdoc_files:
|
@@ -69,6 +70,7 @@ files:
|
|
69
70
|
- bin/sogoumap2pdf
|
70
71
|
- bin/sogoumap2disk
|
71
72
|
- bin/sogoumap2pdf_from_disk
|
73
|
+
- bin/sogoumap2pdf_from_disk_front_page
|
72
74
|
- config/hoe.rb
|
73
75
|
- config/requirements.rb
|
74
76
|
- lib/sogoumap2pdf.rb
|