Cacooで書いた図をSVGでエクスポートしてasciidoctorで埋め込むサンプルを作ってみた

  • 6
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

Cacooで作成した図は画面のメニューからSVGでエクスポートすることが出来ます。
これをasciidoctorで文書に埋め込めば画像と違って拡大縮小してもきれいな図ができるのではと期待して試してみました。

サンプル

ソース: https://github.com/hnakamur/asciidoctor-fopub-embed-svg-example
HTML出力: https://hnakamur.github.io/asciidoctor-fopub-embed-svg-example/class_diagram.html
PDF出力: https://hnakamur.github.io/asciidoctor-fopub-embed-svg-example/class_diagram.pdf

出力手順

セットアップ

以下のコマンドでセットアップします。

bundle --path vendor/bundle --binstubs vendor/bin

また、PDF出力にはasciidoctor/asciidoctor-fopubを使っていますので、Javaをインストールしておいてください。

Hombrew Caskをセットアップ済みなら以下のコマンドでOKです。

brew cask install java

HTML出力

bundle exec rake html

PDF出力

bundle exec rake pdf

初回実行時にasciidoctor/asciidoctor-fopubをクローンしてから実行するようになっています。

課題

Cacooの図をSVG形式でエクスポートするのをAPIでやりたい

図の画像を取得するAPIではPNG形式しか取得できないようです。SVG形式でも取得できるようにお問い合わせから要望を送ってみました。

PDFだと図の下にムダな余白ができてしまう→解決

出力されたPDFを見ると下のスクリーンショットのように図の下にムダな余白ができてしまいます。HTMLではムダな余白はできません。

redundant_space.png

この問題についてはasciidoctorのフォーラムで質問してみました。

2014-11-04 追記

フォーラムで回答を頂いて解決しました。svgのルート要素に widthheight 属性を追加すればOKでした。上記の例では viewBox="75.0 34.5 441.0 265.5" と指定されていたので、 width="441.0" height="265.5" を追加しました。これで図とその後のテキストの間のムダな余白は無くなりました!

pdf_with_embedded_svg.png

やはりPNGの画像よりSVGで埋め込むほうが文字がくっきりして綺麗ですね!

あとはCacooがSVGで取得するAPIを用意してくれるのを期待しています。

Cacooの図の画像取得APIでSVG形式をサポートする要望に投票お願いします!

2014-11-04 追記

Cacooの図の画像取得APIでSVG形式をサポートしてほしいとお問い合わせフォームでお願いしてみたところ、
要望受付窓口 (匿名にて投稿可能)にあげてくださいとの回答を頂きました。

ということで、早速要望を書きました。みなさん是非投票をお願いします!

図の画像取得APIでSVG形式をサポートしてください! – cacoo のカスタマーフィードバックとアイディア