13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-09-01

概要

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 -
13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?