block by shimizu c5c8ea2add273c83995983c540a53f2d

Chart Downloader α

Full Screen

D3.jsで描画したチャートをダウンロードできるようにするモジュール。 cssで適用したカラーなども反映されるようになっている。

未完成。

サーバー側でレンタリングする方が楽かも。

ちょっと後悔している。

動作

downloadSVG

downloadPNG

問題点

以下、勘違いして書いているかもしれないので要注意。


a要素のDownload属性が使えないので、ダウンロードされずブラウザ上でファイルが開いてしまう。なんかいい方法があったら教えてください。

image要素のsrcにデータURIスキームとしてsvgを読み込ませるにはbase64にエンコードする必要がある。window.btoaはユニコードに対応していないので、svgに日本語が含まれている場合は別途base64エンコード処理を実装する必要がある。めんどい 頑張ってbase64に変換してimgタグに読みこませても、canvasのdrawImageに渡すとセキュリティエラーがでる。

(今回はcanvgを使って上記問題を回避した。でもあんまり綺麗では無い)

その他、img.onloadの発火がsvgの読み込みが終わる前に発火してたり、そもそも発火しなかったりするので訳がわからないよ。

Built with blockbuilder.org

index.html

barchart.js

downloader.js