Sol5とExcel表

先の「Sol5とベクター画像」では、パワーポイントで描いた線画をベクトル画像としてSol5に貼り付ける方法を説明しました。利用者の中にはExcelで作られた表をSol5に貼り付けたいと思われる人も多いのではないかと思います。本稿ではExcel表をSol5に貼り付ける方法をご説明します。なお、本稿はSol5-0.13.0以降のSol5を対象としています。

Excel表のSol5への貼り付け

図1のようなExcel表をコピーして、Sol5に貼り付けると、図2のようにテキストデータだけが貼り付けられます。

Excel表画像のSol5への貼り付け

Excelには単純なコピーだけでなく、画像としてコピーする方法も用意されています。Excelのリボン「ホーム → クリップボード → コピー → 図としてコピー → ビットマップ」を選ぶと、表イメージの画像がクリップボードにコピーされます。これをSol5に貼り付けたものが図3です。画面上ではきれいにコピーできたように見えますが、解像度は粗く、拡大すると図4のようになります。印刷すると粗さが目立つことになります。

なお、Excelでは、ビットマップ以外にピクチャでのコピーもできますが、これをSol5に貼り付けると真っ黒な画像になってしまいます。

Excel表画像のSVG形式での貼り付け

Sol5とベクトル画像」の記事でお話ししましたように、PowerPoint画像にすれば、SVG形式の画像として、ファイル保存ができます。Excelデータの場合、以下の手順で、SVG形式画像としてSol5にインポートすることができます。

(1) Excel表データをコピーする。
(2) PowerPoint上に「拡張メタファイル」として貼り付ける。
(3) PowerPoint上で「グループ解除」を指示する。このとき「Microsoft Office 描画オブジェクトに変換しますか?」と聞かれるので、「はい」と答える。
(4) Excel表の構成要素全体を選択して、右クリックし、表示されるコンテキストメニューで「図として保存」を選び、「SVG」形式でファイルに保存する。
(5) Sol5でメニュー「編集/画像データのインポート」を使って、上のSVGファイルをインポートする。

この手順でSol5にインポートしたものが図5です。画像がかなり拡大された形でインポートされます。画像の横幅を縮小したものが図6です。

手間はかかりますが、このようにSVG画像としてSol5に取り込めば、画面上でも、印刷結果でもきれいなExcel表を表示できます。

なお、「Sol5とベクトル画像」の記事でお話ししましたように、InkscapeなどのSVG画像ツールを間にかませれば、ファイル渡しではなく、クリップボード経由でSol5にSVG画像を貼り付けることができます。この場合でも、上の手順の「拡張メタファイル」での貼り付けと「グループ解除」が必要です。ご注意下さい。

Sol5とベクター画像

論文や報告書では、フローチャートなどのように、矩形や円などの線画と文字列で構成された画像がしばしば使われます。これらの画像はビットマップではなくベクター画像として記述することで、拡大しても、縮小してもきれいに表示できるとともに、画像サイズを小さくすることができます。

Sol4ではWindows メタファイルというマイクロソフト社固有のベクター画像形式を利用することで、この目的を達成し、多くの利用者の支持を得ることができました。

Sol5では、2001年にW3Cによって標準化されたベクター画像形式であるSVG(Scalable Vector Graphics)に対応することで、同じ目的の実現を試みています。

本稿では、Sol5でのSVGの使い方と問題点、および、問題点の回避策をお話しします。なお、本稿はSol5-0.13.0以降のSol5を対象としています。

SVG対応の描画ツール

Adobe Illustrator がSVG対応の描画ツールの代表格ですが、最近では、Inkscapeなどフリーの高機能描画アプリも登場してきています。また、VISIOやastahなどの構造化ダイアグラム描画アプリもSVGに対応してきています。

マイクロソフト社のPowerPointなどのOffice画像も、近年SVGへの対応を考慮してきていますが、まだ一部の対応に止まっています。これについては後述します。

InkscapeのSVG画像の貼り付け

図1は、SVG描画ツールであるInkscapeで作成したフローチャートをコピーし、Sol5に貼り付けたものです。図2は図1の画像をSol5上で「Width=100%」にして拡大した画像です。ベクター画像ですので、どちらもきれいに表示されています。同じことですが、高解像度で印刷しても、これならきれいに印刷されます。

PowerPoint画像の貼り付け

図3はPowerPointで作成したフローチャートを普通にコピーしてSol5に貼り付けたものです。PowerPoint画像は普通に貼り付けますとPNGという形式のペイント画像になります。PowerPointの場合は、元のベクトル画像の約3倍のサイズのペイント画像になるようです。このオリジナルのペイント画像を約1/3に縮小したものが図3です。このように縮小すると一部の線は見えなくなり、やや読みにくい画像になります。

図4は図3のフローチャート画像を図2と同じサイズに拡大したものです。上で述べましたように元の画像がやや拡大されていましたので、比較的きれいな文字になっていますが、それでもややぼやけた画像になります。このことは300dpi程度で印刷するときれいですが、600dpiではやや粗さが見えるということになります。

PowerPoint画像のSVGファイル出力をインポート

今日のPowerPointは画像データをSVGファイルに保存することができます。PowerPoint上で画像を選択し、右ボタンクリックで表示されるコンテキストメニューで「図として保存…」を選び、表示されたファイル選択ダイアログの「ファイルの種類」で「SVG (*.svg)」を選ぶことで、SVGファイルとして画像データを保存することができます。

他方、Sol5 (5-0.13.0以降)は、メニュー「編集/画像データのインポート」を用いて画像データファイルを読み込み、選択中のトピックにその画像を表示することができます。

図5はPowerPointから出力された画像データのSVGファイルをSol5にインポートしたものです。図6はその画像をSol5上で拡大したものです。Inkscapeで作成したSVG画像と同じく、縮小しても、拡大しても画像の劣化はほとんど見られません。

PowerPoint画像をSVG形式で直接貼り付けられないのか?

実は今日のPowerPoint (Office 2016以降)で画像をコピーすると、SVG形式の画像データもクリップボードに保存されます。このことは InsideClipboard などのクリップボード内データ表示ツールを使うことで確認できます。

しかし、Sol5が開発に使用しているJava及びJavaFXがもつClipboardクラスでは、PowerPointのSVG画像データなどいくつかのタイプのデータを捕捉することができません。このことは海外でも話題になっており、Javaのバグではないかと言われています(How do I correctly get an Image from the Clipboard in JavaFX https://stackoverflow.com/questions/54995198/how-do-i-correctly-get-an-image-from-the-clipboard-in-javafx-what-is-the-differ 2020)。

ただし、JavaのClipboardクラスはInkscapeのSVG画像コピーデータを正しく捕捉できています。これを見るとPowerPointの送出データに何か問題があるのかもしれません。どちらに原因があるのか分かりませんが、早急に改善してもらいたいところです。

PowerPoint画像をInkscape経由で貼り付ける

Inkscapeを間に挟んでPPT画像コピーをSol5貼り付けることで、SVG画像を貼り付けることができます。具体的には以下のようにします。

(1) PowerPoint上で画像をコピーする。
(2) Inkscape上に貼り付ける。
(3) Inkscape上で画像を選びコピーする。
(4) Sol5上に貼り付ける。

複数アプリを立ち上げて利用することに慣れている人であれば、ファイル渡しよりもこの方が簡単でしょう。

おわりに

Sol5はSVG画像に対応していますので、線画と文字列で構成されるベクター画像をきれいに表示・印刷することができます。

SVG画像を作成するにはInkscapeのようなSVG専用ツールを使うのが確実です。PowerPointに慣れている人の場合は、ファイル渡しなど少し手間をかける必要がありますが、PowerPoint画像をSVG画像として、Sol5に取り込むことができます。

Sol5-0.12.2を公開しました

開発中のSol5-1.0について」で予告していました機能を実装した試用版です。先日公開しましたSol5-0.11.5のバグ修正ならびに複数書類アプリ版の実装等を行っています。

この版で修正されたバグは以下の2点です。

    1. メニュー「ファイル/終了」を選ぶとエラー・ダイアログが表示される
    2. 半角空白を含む文字列の検索で失敗することがある

この版で追加された機能は以下の3点です。

    1. 複数書類アプリ版の実装
      Sol5-0.11までは、開く書類ごとに別のSol5アプリが立ち上がっていました。このため多数の書類を開くとメモリ占有量が大きくなり過ぎるという欠点を抱えていました。Sol5-0.12では、複数書類アプリとしてSol5を起動するか、これまでと同じく単一書類アプリとしてSol5を起動するか選べるようにしました。デフォルトは複数書類アプリです。これについて詳しくは下で述べる「Sol5の設定について」のテキストをご参照下さい。
    2. メニュー「トピック/トピックの分割」を追加
      トピック文字列編集中にこれを選ぶ(または Ctrl+Shift+J を押す)と入力カーソル位置でトピックを分割し、2つの兄弟トピックにします。
    3. メニュー「その他/Sol5の設定について」を追加
      メニュー「その他/Sol5の設定…」で行えるアプリケーション設定に関する説明を表示します。

Sol5ダウンロード」のページからダウンロードしてください。