Links

Content Skeleton

This Page

Previous topic

Batik

Next topic

Squiggle

SVG to JPEG demo

Demo

Below steps have been made into batik- bash functions:

simon:transcoder blyth$ batik-
simon:transcoder blyth$ batik-get             # download the distribution
simon:transcoder blyth$ batik-svg2jpg-build   # compile the demo java
simon:transcoder blyth$ batik-svg2jpg-ex
/data/heprez/data/scrape/20130325/hfagc/00208/01218/01218.svg
simon:transcoder blyth$ batik-svg2jpg $(batik-svg2jpg-ex) /tmp/out.jpg
/data/heprez/data/scrape/20130325/hfagc/00208/01218/01218.svg:1: warning: failed to load external entity "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
                                                                               ^
time java -cp /usr/local/heprez/future/batik/transcoder:/usr/local/heprez/future/batik/batik-1.7/batik.jar SaveAsJPEG 01218_nometa.svg

real    0m9.630s
user    0m5.883s
sys     0m0.784s
simon:transcoder blyth$ open /tmp/out.jpg

Step by Step

Compile

simon:transcoder blyth$ batik-jar
/usr/local/heprez/future/batik/batik-1.7/batik.jar
simon:transcoder blyth$ javac -cp $(batik-jar) SaveAsJPEG.java
simon:transcoder blyth$ ll
total 16
-rw-r--r--  1 blyth  staff  1009  4 Apr 17:25 SaveAsJPEG.java
-rw-r--r--  1 blyth  staff  1444  4 Apr 17:31 SaveAsJPEG.class

Pick an SVG

simon:data blyth$ find $HEPREZ_DATA -name '.svg' | wc -l
    3042

simon:data blyth$ open $HEPREZ_DATA/scrape/20130325/hfagc/00208/01218/01218.svg
simon:transcoder blyth$ cp $HEPREZ_DATA/scrape/20130325/hfagc/00208/01218/01218.svg .

Try to transcode

simon:transcoder blyth$ java -cp .:$(batik-jar) SaveAsJPEG  01218.svg
Exception in thread "main" org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
The current document is unable to create an element of the requested type (namespace: http://www.w3.org/2000/svg, name: now).
        at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:134)
        at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
        at SaveAsJPEG.main(SaveAsJPEG.java:27)

Remove metadata element

Despite the warning, succeed to remove the metadata element:

simon:transcoder blyth$ xsltproc $(heprez-home)/hfag/mods/webapp/hfagc/resources/strip-metadata.xsl 01218.svg > 01218_nometa.svg
01218.svg:1: warning: failed to load external entity "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"

simon:transcoder blyth$ xmllint --format 01218_nometa.svg  | more

Try again

simon:transcoder blyth$ time java -cp .:$(batik-jar) SaveAsJPEG  01218_nometa.svg

real    0m14.804s
user    0m5.878s
sys     0m0.856s

Check the jpg

simon:transcoder blyth$ open out.jpg
  1. not as bad as i recall
  2. dinky math font, but legible-ish
    • numbers seem to use too large a font wrt other symbols, leading to overlapping
  3. title, key and axis text is missing