AWS
Graphviz

AWSシンプルアイコンをGraphviz等で使うときのTIPS

More than 3 years have passed since last update.


概要

Amazonが無償提供しているAWSシンプルアイコンのeps / svgを使うと、AWSの構成図等をGraphviz等のソフトウェアで描くことができる(Pandoc+beamer+GraphvizでAWSの図を描く参照)。

ただそのさい多少のTIPSがあるのでまとめる。


ファイル名

ささいな点だが、AWSからダウンロードしたままのファイル名はCompute & Networking_Elastic Load Balancing.epsのように空白を含んでいて扱いづらいので、私はelb.epsなどのように適宜リネームして使っている。

$ find ~/Downloads/AWS_Simple_Icons_svg_eps/ -name '*Load\ Balancing.eps' -exec cp {} elb-org.eps \;


EPSの形式

AWSアイコンのepsファイルは、epsに対応しているはずのGraphvizなどの一部のソフトウェアでは正しく扱えないことがある。

これはこのファイルが実際にはDOS EPS Binaryとよばれる形式であるため。dosepsbinというツールを使うと、DOS EPS Binary形式からGraphviz等が読み込めるepsを抽出することができる。

$ dosepsbin --eps-file elb.eps elb-org.eps


余白

AWSアイコンはデフォルトでは余白に囲まれており、そのままだとGraphviz等でレイアウトしたときに下図のorgのように納まりが悪いため、下図fitのようにフィットさせるべく、余白をトリムする必要がある。

k.png

私はepsをpngに変換したものとsvgを使っているので、この2つについてトリム方法を紹介する。


pngのトリム

有名なImageMagickが使える。epsからの変換を含めて書くと次の通り。

$ for n in *.eps; do gs -dNOPAUSE -dBATCH \

-q -sDEVICE=pngalpha -dEPSCrop -sOutputFile=- -r72 $n \
| convert -trim - ${n%eps}png; done


svgのトリム (解決)

色々調べたが、SVGを直接トリムしようとするとInkscapeを使った方法ぐらいしかない。

2014.9.6: 今回対象としているAWSシンプルアイコンは幸いにもepsでも提供されている。epsについては、Ghostscriptのbboxデバイスを使うことで、トリムされたバウンディングボックスを得ることができる。さらにGhostscriptの出力デバイスにはsvgデバイスがあるので、結局、これを組み合わせることで、コマンドラインだけでトリムしたSVGを得ることができた。

まずbboxをもとにトリムしたepsを作成するスクリプトを示す。

https://gist.github.com/ooharak/214cfc1b36f73befcdbb

これで得たepsに対し以下を実行することで、トリムしたSVGが得られる。

./epstrim.sh elb.eps | \

gs -dNOPAUSE -dBATCH -q -sDEVICE=svg -dEPSCrop -sOutputFile=out.svg -