USBメモリ活用講座
【Ghostscript 9.04 & GSview ポータブル化】

< 最終更新日: 2023-12-07 >

Ghostscript 9.04 & GSview 5.0 のポータブル化

ここでは USB メモリを PC に挿入したときに,認識されるドライブレターが (U:) であるものとし,このドライブのことを USB ドライブと呼びます.

手動で zip ファイルを展開 (解凍) する必要がありますので,事前に W32TeX ポータブル化 でダウンロードした unzip.exePATH の通ったフォルダに入れておいてください.

まず,gs904w32full-gpl.zip,および gsv50w32.exe をローカルハードディスクの適切なフォルダ (C:\temp など) にダウンロードしましょう (配布元についてはGhostscript & GSview ポータブル化の説明を参考にしてください).

次に,Ghostscript と GSview を USB ドライブの usr\GSview フォルダにインストールすることにします. 別のフォルダにインストールしたい人は,適宜読み替えながら作業を進めてください.

  1. USB ドライブの usr ディレクトリの下に GSview フォルダを作成し,カレントディレクトリを移動します.
    md \usr\GSview Enter
    cd \usr\GSview Enter
  2. gs904w32full-gpl.zip を展開します (ダウンロードしたファイルが C:\temp 以外のフォルダに置いてある場合は,適宜置き換えてください).
    unzip C:\temp\gs904w32full-gpl.zip Enter
    「'unzip'は内部コマンドまたは外部コマンド(中略)として認識されていません」といった類のメッセージが表示されるようでしたら,unzip.exe をダウンロードして,PATH の通ったフォルダに入れるのを忘れていませんか?
  3. gsv50w32.exe を展開します (ダウンロードしたファイルが C:\temp 以外のフォルダに置いてある場合は,適宜置き換えてください).
    unzip C:\temp\gsv50w32.exe Enter
    途中で次のようなメッセージが表示され,展開が一旦停止されます.
    replace filelist.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename:
    ここでは,gs904w32full-gpl.zip にも含まれていた filelist.txt を置き換えるかが尋ねられています. [ ] の中のアルファベットのキーで動作が選択できますので,y キーをタイプしてください.
  4. 展開が終わったら,ポータブル化に必要のないファイルを削除します.
    del gs904w32full-gpl.diff Enter
    del set*.* Enter
    del FILE_ID.DIZ Enter
    del filelist.txt Enter
    del un*.exe Enter
  5. CID フォントの設定ファイル cidfmap の作成を行います. あるいは IPA フォントの利用 に従って設定作業をします.
    cd gs9.04\lib Enter
    ren cidfmap cidfmap.org Enter
    set GS_LIB=\usr\GSview\gs9.04\Resource\Init;\usr\GSview\gs9.04\Resource;\usr\GSview\gs9.04\lib;\usr\GSview\gs9.04\kanji Enter
    ..\bin\gswin32c -q -dBATCH -sFONTDIR=c:/windows/fonts -sCIDFMAP=cidfmap mkcidfm.ps Enter
    IPA フォントの利用 をしないのであれば,厳密には USB ドライブを挿入して環境設定を行う (texenv.vbs を起動する) ときに,その PC の Windows システムフォルダとシステムフォントに合わせてこの処理を行うべきです. Windows 2000 のようにデフォルトのシステムフォルダが C:\WINNT である場合や,「MS 明朝」と「MS ゴシック」の TrueType フォントが C:\Windows\Fonts に入っていない場合には,和文フォント (Ryumin-LightGothicBBB-Medium) を使う PS/EPS ファイルの和文が表示されなくなります. とはいえ,Windows XP/Vista/7/8/10 ではデフォルトのシステムフォルダ (C:\Windows) 以外が使われることも,「MS 明朝」と「MS ゴシック」が見つからないこともほとんどないだろうと思いますので,1 回だけ実行しておけば十分と思います.
  6. 警告: この設定は,くれぐれも自己責任でお願いします. GSview は英語,ドイツ語,フランス語,イタリア語など合計 11 ヵ国の言語からメニュー表示の言語を選択できます (残念ながら日本語はありません). ここでは,英語に決め打ちしてほかの言語は選ばない設定にすることで,ディスク使用量を (ほんの 2MB ほどですが) 減らし,起動もシンプルにしてみようと思います. では,U:\GSview\gsview ディレクトリに移動して,10 個ある gsvw32*.dll をすべて削除してください. 次に,11 個ある gsview??.chm ファイルのうち gsviewen.chm だけを残して,その他を削除してください (あえてコマンドは書きません).

インストールが済んだら,Ghostscript & GSview ポータブル化の動作確認 と同様の確認作業をしておきましょう.

GSview 起動スクリプト作成

現在の GSviewPortable.exeOption-Advanced Configure から表示される Advanced Configure ダイアログボックスの設定項目を,起動するたびにリセットしてしまうようです. 環境変数 GS_LIB が正しく設定されていれば,この設定をしなくても正しく表示されますが,GSviewPortable.exe をダブルクリックして起動するような使い方をしたい場合に,GSview が起動されてから毎回設定するのは煩雑です. そこで,必要な設定を自動で済ませ,直接 GSview 本体をポータブル設定で起動してしまうスクリプトを作ってみました (少しアヤシイこともしています). 以下に従って作業を進めてください.

  1. GSviewPortable.exe は起動するたびに GSview\gsview フォルダにある gsview32.ini を更新 (上書き) してしまいます. ここに設定を書いておいても読んでくれるわけではないようですし,必要のないファイルの読み書きは USB メモリの寿命も縮めるなど心理的にもよくありませんので,「読み取り専用」属性を設定してしまいます (動作に支障はないようです). コマンドプロンプトで行うのであれば,次のように入力します.
    cd \GSview\gsview Enter
    attrib +R gsview32.ini Enter
  2. テキストエディタで次のような WSH スクリプト wakegsv.vbs を作成し,PATH を通すフォルダ (U:\bin など) に保存します.
    ' WSH で gs9.04 の環境変数を設定して GSview を直接起動
    Option Explicit
    Dim objWshShell,objFS,objEnv
    Dim strDrv,strGSPath,strExec,strArg
    Set objWshShell = WScript.CreateObject("WScript.Shell")
    Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
    ' カレントドライブを取得
    strDrv = objFS.GetDriveName(WScript.ScriptFullName)
    ' GSView フォルダが存在するかをチェック
    strGSPath = strDrv & "\usr\GSView"
    If objFS.FolderExists(strGSPath)=0 Then
        WScript.Echo strGSPath & "が見つかりませんので終了します"
        WScript.Quit 0
    End If
    ' 環境変数PATHの設定
    Set objEnv = objWshShell.Environment("Process")
    objEnv.Item("PATH") = strGSPath & ";" _
      & strGSPath & "\gs9.04\bin;" _
      & strGSPath & "\gs9.04\lib" _
      & objEnv.Item("PATH")
    ' 環境変数GS_LIBを設定
    objEnv.Item("GS_LIB") = strGSPath & "\gs9.04\Resource\Init;" _
      & strGSPath & "\gs9.04\Resource;" _
      & strGSPath & "\gs9.04\lib;" _
      & strGSPath & "\gs9.04\kanji"
    ' 環境変数GS_OPTIONSを設定
    objEnv.Item("GS_OPTIONS") = "-dWINKANJI"
    ' GSviewの起動オプションを設定(-aはportableモードで起動)
    strExec = strGSPath & "\GSView\gsview32.exe -a"
    For Each strArg In WScript.Arguments
      strExec = strExec & " " & strArg
    Next
    objWshShell.Run strExec
    ' 以下は気に入らなければ削除してください
    ' Select Languageダイアログボックスでdefault(English)を選択
    Do Until objWshShell.AppActivate("Select Language")
      WScript.Sleep 1000
    Loop
    objWshShell.SendKeys " "
    ' GSview RegistrationダイアログボックスでOKを選択
    Do Until objWshShell.AppActivate("GSview Registration")
      WScript.Sleep 1000
    Loop
    objWshShell.SendKeys "%O"
    WScript.Quit
    

では,動作確認です. wakegsv.vbs を起動してみてください. 環境によっては Select Language ダイアログボックスで引っかかって処理が停まることがあるかもしれませんが,その場合は手動で先へ進めてください. GSview が起動されたら,tiger.epsarticle9.ps などが無事開けるかを確認してください. うまくいったら,コマンドプロンプトウィンドウから,次のような起動法も試してみてください.

wakegsv.vbs \usr\GSview\gs9.04\examples\golfer.eps Enter

女性のゴルファーのイラストが表示されれば成功です. このように wakegsv.vbs では,開きたい PS/EPS/PDF ファイルをコマンドライン引数に与えることもできます.

GSview Registration ダイアログボックスに OK を自動応答してしまうのは,本当はあまりお勧めしたくはありませんが,WSHではこんなこともできるというデモの意味も兼ねて公開します (気に入らない人は該当部分を削除してください). 自動応答を使い続ける人も,このように便利なソフトウェアを無償で提供してくださっている開発チームの皆さんへの感謝は,常に忘れないようにしましょう.

IPA フォントの利用

IPA フォントについての詳細や,USB メモリへのインストールについては,フォントインストーラー SAKURA の IPA フォントの項に従ってください. ここでは,IPAex 明朝と IPAex ゴシックが U:\usr\w32tex\share\texmf-dist\fonts\truetype\ipa にあるものとします※1

まず,wakegsv.vbs をテキストエディタで編集し,環境変数 GS_LIB の設定 (21~25 行目) を次のように書き換え (下 2 行が変更部分),上書き保存します※2

' 環境変数GS_LIBを設定
objEnv.Item("GS_LIB") = strGSPath & "\gs9.04\Resource\Init;" _
  & strGSPath & "\gs9.04\Resource;" _
  & strGSPath & "\gs9.04\lib;" _
  & strGSPath & "\gs9.04\kanji;" _
  & strDrv & "\usr\w32tex\share\texmf-dist\fonts\truetype"

次に GSview\gs9.04\lib にある cidfmap をテキストエディタで編集します. おおむね最新の Ghostscript 向けの cidfmap と同じ内容を書けばよいでしょう (cidfmapの作成 を済ませてしまった人は,自動的に作成された cidfmapcidfmap.win のような別名にしておき,保存しておいたオリジナル cidfmap.orgcidfmap に上書きコピーしてから編集するとよいでしょう).