はじめに
PowerPointで作図した図はベクタ形式であり,そのままpdfなどに埋め込むと拡大縮小に頑健な図となります.
これまでにいくつか方法が編み出されてきましたが,どの方法もしばしばうまくいきません.
そこで,本記事では,これくらいやればうまくいくレベルの網羅性を持った情報を掲載します.
条件は以下です.
- PowerPointで作図したものをベクタ形式でEPSにする
- キャンバスはみ出し作図OK
実行環境は以下です.
- Windows 10 Professional
- Office 2016
なお,文字が含まれる場合は要注意です.フォントの問題があるからです.
EPSにするのであれば,とりあえず,どのOSやPCにも必ず入ってそうなArialなどの標準的なフォントを使うようにしましょう.
あるいは,フォント埋め込みで対応できます.今のところeps出力を含めシンプルにやれる方法がわかりません.その2が一番やりやすいと思います.
数式が入っている場合は,おそらくフォント埋め込みは必須です.
方法1:ツールを使う
Officeではウィンドウズメタファイル(wmfやemf)なるものを出力できます.これはベクタ形式で保存可能な画像形式です.
ここからEPSを作るというツールがあります.
Metafile to EPS Converter,wmf2epsが挙げられます.
以下の記事をご参照ください.
- Metafile to EPS Converter
- wmf2eps
ただし,これらはうまく動かない場合が報告されています.また,wmf2epsは開発が終了しており,Windows8までのサポートとなっているようです.
おそらく一番実行環境に左右される方法だと思います.
方法2:ベクタ形式のペイントツールを経由する
Adobe IllustratorやInkScapeを経由する方法があります.
PowerPointにて,図を選択して「図として保存」を選び,ベクタ形式であるwmfやemf,svgで出力し,これを読み込み,epsで出力できます.おそらく特に苦労はしないと思います.svgはOffice2016から扱えるようになりました.
おそらくバージョン移行にも頑健です.どちらも重いアプリケーションですが,現状かなりお勧めです.
InkScapeでは,コマンドラインでの変換も可能です.引数の詳細は--helpで確認できます.GUI開くのが重い!という場合に便利です.
Windowsの場合,InkScape.exeではなくInkScape.comがコマンドライン用です.それ以外のOSはInkScapeの実行ファイルに引数を渡せます.
PostScriptレベルは2(デフォルト)と3が使用可能とのことです.
(InkScapeのパス)\InkScape.com -z -f=(対象のファイル) -E=(出力EPSファイル名) --export-ps-level=(PostScriptレベル.)
--export-text-to-path (-T)オプションを使うとテキストがパスになります.ファイルサイズは増大しますが,フォントの有無の問題が無くなります.
方法3:OpenOfficeを経由する
サードパーティのOfficeクローン,OpenOfficeはEPS出力に対応していますので,その2と同様,ここを経由する方法があります.
ただし,OfficeからOpenOfficeへの変換の際にレイアウトが崩れる可能性があります.
方法4:仮想EPSプリンタで出力する
昔からある伝統的な方法です.
ちゃんとやるとうまくいきますが,手順が複雑で,かつちゃんとやらないとやっぱりうまくいきません.
また,バージョンが移行するたびにUIや操作方法が変わりますが,歴史的にみると同じ操作はできるようになっています.
同趣旨の他記事による方法では,「キャンバスはみ出し作図OK」をクリアできませんので,改めて方法を記載します.
なお,下記の手順の半分はこちらと重複していますので,ご参照ください.
なお,手順1, 3にGhostScriptならびにGSViewが必要です.未インストールであれば,インストールしてください.
- 仮想EPSプリンタを設定する
- 新しいプリンタの追加ウィザードを開く.
- (Windows10の場合)スタートメニュー→設定(歯車アイコン)→デバイス→プリンターとスキャナー→プリンターとスキャナーの追加→プリンターが一覧にない場合
- (Windows11の場合)設定→Bluetoothとデバイス→プリンターとスキャナー→プリンターまたはスキャナーを追加します [デバイスの追加]→(しばらく待つ)→「プリンターが一覧にない場合 新しいデバイスの追加」
- ローカルプリンターまたはネットワークプリンターを手動設定で追加する を選択
- 既存のポートを使用→FILE: (ファイルへ出力)を選択
- Ghostscriptの仮想プリンタドライバをインストール
- 「ディスク使用」
- 「参照」から, (Ghostscriptのインストール先)/lib/ghostpdf.inf を開く
- プリンターの名称は,"Ghostscript EPS" などと設定しておくと後々便利.
- プリンターの設定を変えておく
- プリンターの設定から,プリンターのプロパティを開き,全般→基本設定→詳細設定→PostScriptオプション→PostScript出力オプション を 「EPS (Encapsulated PostScript)」 にする
- 新しいプリンタの追加ウィザードを開く.
- PowerpointからEPSを出力する
- Powerpointの新しいスライドを白紙で作成する
- レイアウトを白紙にする
- デザイン→スライドのサイズ→ユーザー設定のスライドのサイズ→出力したい図が入る十分な大きさのキャンバスサイズを設定.必ず縦長にする.
- 図をコピー&ペーストする.
- 既にあるスライドをリサイズすると,図の大きさも変わってしまい,面倒.
- ファイル→印刷
- プリンターを,先ほど作成した仮想EPSプリンタにする
- 印刷ボタンを押す.
- ファイルの種類を すべてのファイル にする.
- 適当な名前.epsとして保存する.拡張子を付けること.
- BoundingBoxを付ける
- GSViewでepsを開く.
- 図がはみ出していたら,Media→User Definedから,十分入る大きさに設定する.
- File→PS to EPSを選ぶ.
- Automatically calculate Bounding Boxを選択状態にする.
- Yesを押す.
- ファイル名を別名で保存する.同じファイルに上書き保存してはいけない.
※GSViewが開発停止しているため,手順3ができない可能性があります.
そこで,面倒にはなりますが別解を用意しました.
- 対象のファイルが入っているフォルダをエクスプローラで開く
- ファイルパスの窓をクリックして,「powershell」と記入してEnter
- 下記を「作ったファイル名」を書き換えた上でコピペ
$fn="作ったファイル名.eps"; $bb=(& (@(Get-ChildItem "C:\Program Files\gs\gs*")[0].fullname+"\bin\gswin64c.exe") -sDEVICE=bbox -dBATCH -dNOPAUSE $fn 2>&1 | ?{($_.GetType()).name -eq "ErrorRecord"})[0]; Get-Content $fn | %{$_ -replace "^%%BoundingBox.*$",$bb;} | out-file $fn;
あるいは,設定が込み入りますが下記の手順をしておくと手順3を省けます.
EPS ファイルの作り方(横国大の前田先生のページ)
まとめ
PowerPointからベクタ形式でEPSにする4つの手段についてまとめました.
また,古典的手法(仮想EPSプリンタ利用)については,はみ出し作図を許容する方法の情報を新たに提供しました.
これらの方法で,無事きれいな図を載せられることを祈ります.
なお,筆者は方法2を推しますが,普段は方法4を使っています.状況に応じてInkScapeを使って調整しています.
何か良い別の方法がありましたらぜひお教えください.