このページの目次

はじめる

インストールから、最初のページをアプリに表示するまで。たいていは5分ほどで終わります。

1. 使い方を選ぶ

全部入れる必要はありません。どこから呼び出したいかで、ひとつ選んでください。

npm はプロジェクトの node_modules に、pip は使っている環境の site-packages に入ります。cargo install なら docsvg が ~/.cargo/bin に入ります。

コマンドで使う

ターミナルやCIでファイルを変換したいとき。Rust があれば cargo で入ります。なければ、リリースページから自分のOS用のファイルをダウンロードできます。

cargo install document-svg --locked

Node.js / TypeScript

WebアプリやElectronアプリの中で変換したいとき。型定義も入っています。

npm install document-svg

Python

スクリプトやデータ処理の中で変換したいとき。Python 3.10 以降で使えます。

python -m pip install document-svg

Rust

Rust のプログラムに組み込みたいとき。

cargo add document-svg

2. 最初のファイルを変換する

同じ変換を、どこからでも同じように呼べます。どの例も、書いてあるとおりに動きます。

ファイルをSVGのページに変換するbash

docsvg report.pdf --output output/report
docsvg slides.pptx --output output/slides
docsvg architecture.drawio --output output/diagram --stencils path/to/stencils.xml

PDFのページを並列変換するbash

docsvg report.pdf --output output/report --jobs 4 --max-pages 100

SVGのページを PowerPoint や Word などのファイルに戻すbash

docsvg reverse output/slides --output slides.pptx
docsvg reverse output/diagram --output diagram.drawio
docsvg reverse output/drawing --output drawing.dxf

手元のSVGを、使う場所に合わせて整えるbash

docsvg transform diagram.svg --output diagram.min.svg \
  --minify --monochrome "#1e293b" --responsive --precision 1

3. 結果を確かめる

出力先には、新しいフォルダか空のフォルダを指定します。中には、ページごとのSVGと、変換の記録(conversion.json)が1つできます。

output/slides/
├── page-0001.svg
├── page-0002.svg
└── conversion.json
  • 記録には、そのまま再現できなかった部分が「警告」として書かれます。
  • エラーなく終わっても、完璧とは限りません。警告があれば、人の目でページを確かめてください。
  • 警告がなくても、Office で開いたときと1ピクセル単位で同じとは限りません。たとえば文字は、SVGを表示する環境にあるフォントで描かれます。

4. アプリに表示する

SVGは画像として表示してください(img 要素など)。SVGの中身を、ページのHTMLに直接貼り込むのは避けてください。

付属の表示用ヘルパーは簡単な確認はしますが、どんなSVGでも無害にするフィルターではありません。

5. いつもの道具から使う

GitHub Actions

プルリクエストで変わった文書を、自動で変換します。

Claude Code / Codex

AIアシスタントに、プラグインとして追加します。

GitHub CLI

リポジトリを手元に置いてインストーラーを実行すると、gh docsvg コマンドとして使えます。

6. うまくいかないとき

  • Windows、macOS、Linux の x64 と ARM64 向けに、ビルド済みのパッケージを用意しています。
  • Alpine Linux の Python にはビルド済みのパッケージがないので、Rust と開発ツールが必要です。
  • npm で入れたのに読み込めないときは、オプションの依存パッケージが入っているか、Node.js とマシンのCPUの種類が合っているかを確かめてください。node_modules を別のOSにコピーしても動きません。
  • 変換したSVGは、最近のブラウザ、resvg、librsvg 2.46 以降で表示できます。