メインコンテンツに移動

GhostScript

長い間, Mac用のGhostScriptを提供していただいたマスクメロン様が消失しておる. 仕方ねえや, 10年ぶりにGhostScriptのビルドでもやってみようか.

てゆうか, これなに

むかしむかし, おおむかし,君達のご両親がまだ小学生だった頃の話です. 世界にPostScriptプリンターが登場しました.コンピュータの印刷物はみんなガタガタギザギザのデジタル文字ばかりだったところへ,滑らかな美しい文字やグラフを「PostScript言語」を使って描けることになりました.素晴らしいのですが,そのプリンターはとても高価でした.そこで,PostScriptファイルの描くべき結果をコンピュータで計算し,安価なプリンターで擬似的な出力を得るソフトが登場しました. それがGhostScriptです.つまりPostScriptの幽霊なんですね.

時は流れ,PostScriptが行なっていた内容は,皆さんご存知PDFファイルやSVGファイルで十分な感じになったので, もはや一般人には存在意義が怪しくなったPostScriptですが,なんせ初号機なので無駄にスペックが高いうえ, 古いソフトウェアがそれに依存しているケースもあり ・・・研究室に入ると,PostScriptファイルと対面することになるわけです. 

インストールするべえ

使うだけが良い人は下に従え. 

とりあえず全部インストールすると, インテル/M1 併設の70MBくらいの /usr/local/bin/gs と, サポートファイルたちが /usr/local/share/ghostscript/10.01.1/ とかにできる. で,これらを使って

  • コマンドラインで gs であるとか, eps2pdf であるとかが利用できるようにある
    • だから gs 英語の.ps  とかで(XQuartzがのんびり起動してから)画面に出る. いちおう.
  • epsやpsファイルを,GhostscriPDF.app に関連づけると
    • EPSファイルをクリックすると一瞬でPDFファイルに変換して書き出し, ついでに一瞬で画面に表示するようになる.
    • 宗教上の理由でクリックできない人は, ターミナルで open my.eps とかでも画面に表示できる. 

 

バカは, 自力でビルドしても良い. 10分くらいかかってしまうよ.下はその記録である.

Ghostscript-10.01

2022年, 突如としてAppleはPostScript/EncapsulatePostscriptのサポートを打ち切った. なんやねんお前ら. psやepsファイルをクリックしてプレビューできないじゃないか.

で, 今までのように /usr/local/bin/gs をインストールするだけでなく, クリックしたら起動しするGhostScriptをなんとかして作りたい.

  • 別に, 何がなんでもGhostScriptで画面表示を行わねばならぬ必要はない. 
    • GhostScriptで画面表示をするとXQuartzが起動して, はっきり言って, うざいからである.
    • ふと思ったんだがX対応なしでビルドできた気がする. そしたらXQuartzなしで, もっと気楽にインストールできるよね
  • EPSファイルをクリックしたら, eps2pdf が起動してPDFファイルを作成し, ほんで, Previewでそれを開く, くらいで良いのだ.
  • 探してみたが, 適当なソフトがないので, 作る. 

ビルドするべえ

とりあえず紆余曲折の末,現在の権利者であられるらしい Artifex Softwareからダウンロードする. 

$ mkdir arm64
$ cd arm64 
$ tar zxf ../ghostscript-10.01.1.tar.gz
$ cd ghostscript-10.01.1 
$ ./configure 
$ make 
$ fswatch -x /usr/local/ >  files.log &      ←黄色は配布パッケージ作成用
$ sudo make install
$ kill %1
$ fswatch_analyze.sh -c _binary log

これでできたものは, とりあえずARM64であり, XQuartzとリンクされちょる:

$ lipo -info _binary/usr/local/bin/gs
Non-fat file: _binary/usr/local/bin/gs is architecture: arm64
$ otool -L _binary/usr/local/bin/gs
/opt/X11/lib/libXt.6.dylib (compatibility version 7.0.0, current version 7.0.0)
/opt/X11/lib/libSM.6.dylib (compatibility version 7.0.0, current version 7.1.0)
/opt/X11/lib/libICE.6.dylib (compatibility version 10.0.0, current version 10.0.0)
/opt/X11/lib/libXext.6.dylib (compatibility version 11.0.0, current version 11.0.0)
/opt/X11/lib/libX11.6.dylib (compatibility version 11.0.0, current version 11.0.0)
/usr/lib/libcups.2.dylib (compatibility version 2.0.0, current version 2.14.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 905.6.0)

豚がいい

学生がまだ全員M1になってないので, Intelとのブタにしないとwww X86ターミナル

$ mkdir x86_64
$ cd x86_64
$ cd ghostscript-10.01.1 
$ ./configure 
$ make

これでできたやつは x86_64である:

$ lipo -info bin/gs
Non-fat file: bin/gs is architecture: x86_64
$ otool -L bin/gs
bin/gs:
    /opt/X11/lib/libXt.6.dylib (compatibility version 7.0.0, current version 7.0.0)
    /opt/X11/lib/libSM.6.dylib (compatibility version 7.0.0, current version 7.1.0)
    /opt/X11/lib/libICE.6.dylib (compatibility version 10.0.0, current version 10.0.0)
    /opt/X11/lib/libXext.6.dylib (compatibility version 11.0.0, current version 11.0.0)
    /opt/X11/lib/libX11.6.dylib (compatibility version 11.0.0, current version 11.0.0)
    /usr/lib/libcups.2.dylib (compatibility version 2.0.0, current version 2.14.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)
    /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 905.6.0)

では豚化する:

$ cd arm_64
$ mkdir uniuni
$ lipo -create -arch arm64 bin/gs -arch x86_64 ../../x86_64/ghostscript-10.01.1/bin/gs -output  uniuni/gs
$ lipo -info uniuni/gs
Architectures in the fat file: uniuni/gs are: x86_64 arm64
$ cp uniuni/gs _binary/usr/local/bin

Resourcesもまとめちゃえ

$ fswatch -x /usr/local/ >  files.log2 &
$ sudo rsync -avr Resource/ /usr/local/share/ghostscript/10.01.1/Resource
$ sudo rsync -avr iccprofiles/ /usr/local/share/ghostscript/10.01.1/iccprofiles
$ sudo rsync -avr LICENSE /usr/local/share/ghostscript/10.01.1
$ kill %1
$ fswatch_analyze.sh -c _binary2 files.log2
$ mv _binary2/usr/local/share/ghostscript/10.01.1/* _binary/usr/local/share/ghostscript/10.01.1/
$ pkgbuild --identifier ghostscript --root _binary ghostscript-10.01.1-en-universal-osx13.3.pkg

あらら. Drupal9のWebさいとぢゃけんファイルサイズが25MBまでなのか・・・上書きしちゃえ

ひさしぶるのええっとスクリプト的なAppleのあれ

まあこんな感じか:

PATH=/usr/local/bin:/usr/bin:/bin
if [ $# -eq 0 ];then
    FILE=`osascript <<@
set theDocument to choose file with prompt "えらべ. EPSふぁいるやで"
return POSIX path of theDocument
@`
 if [ "$FILE" == "" ]; then
   osascript <<@
display dialog "えらべっちゅっとんぢゃ"
@
   exit 0
 fi
else
 FILE=$1
fi
EPSEXT=${FILE##*.}
echo $EPSEXT
if [ $EPSEXT != "eps" -a $EPSEXT != "ps" ];then
 osascript <<@
display dialog "おまえ[$FILE]っつったな.\nepsファイル選べタコ."
@
 exit 0
fi
PDFNAME="${FILE%.*}".pdf     ←最近の子は, パス名に日本語や空白を入れるんだよねえ. だから"対策"
if [ -f "$PDFNAME" ];then
mv "$PDFNAME ${1%.*}".old.pdf
fi
ps2pdf -dEPSCrop "$FILE" -> "$PDFNAME"
open "$PDFNAME"

こいつをとりあえず/Applicationに入れておくと

  • とりあえずクリックするとファイル選択画面が出る. 
  • EPSファイルを選ぶとPDFファイルに変換してOpen.
    • もし同名のPDFファイルが存在したら OLD.pdf に変更する
  • EPSファイルを, このappで開くすると, 上の作業を行う.

じゅうぶんじゃろ. で,こうやってインストーラーを作れば良い.

Ghostscript-10.0

ビルドするベえ

とりあえず紆余曲折の末,現在の権利者であられるらしい Artifex Softwareからダウンロードする. 

cd ghostscript-10.0.0/
./configure
make
fswatch -x /usr/local/ >  log &
sudo make install
kill %1
fswatch_analyze.sh -c _binary log
pkgbuild --identifier ghostscript --root _binary ghostscript-10.00.0-arm64-osx13.0.pkg

うん,まあ,いいんじゃないかい?いや,よくねえな./usr/local/share/ghostscript/10.0.0/Resources が欠落しておる. どうも,

$(gsdir)/$(GS_DOT_VERSION)/Resource
=$(datarootdir)/ghostscript/$(GS_DOT_VERSION)/Resource
=$(prefix)/share/ghostscript/$(GS_DOT_VERSION)/Resource
=/usr/local/share/ghostscript/$(GS_DOT_VERSION)/Resource

にインストールするものらしいな.LICENSEに書いてあるものによると,Adobe殿のご好意によりResourcesフォルダーはAGPLライセンスで公開されているものであるそうだ.でもコピーライト情報は,入れとかねえよヤバげだよね.というわけでこうする:

fswatch -x /usr/local/ >  log2 &
sudo mkdir /usr/local/share/ghostscript/10.00.0
sudo rsync -avr  Resource/ //usr/local/share/ghostscript/10.00.0/Resource
sudo rsync -avr  iccprofiles/ /usr/local/share/ghostscript/10.00.0/iccprofiles
sudo rsync -avr LICENSE /usr/local/share/ghostscript/10.00.0/
fswatch_analyze.sh -c _resource log2
pkgbuild --identifier ghostscript-libs --root _resource ghostscript-10.00.0-libs-arm64-osx13.0.pkg

ま,ええんでないかい.使ってみて問題があったら,また考える.

Ghostscript-9.52

ビルドするベえ

とりあえず紆余曲折の末,現在の権利者であられるらしい Artifex Softwareからダウンロードする. 

cd ghostscript-9.52/
./configure
make
fswatch -x /usr/local/ >  log &
sudo make install
kill %1
fswatch_analyze.sh -c _binary log
pkgbuild --identifier ghostscript --root _binary ghostscript-9.52-osx10.15.pkg

うん,まあ,いいんじゃないかい?いや,よくねえな./usr/local/share/ghostscript/9.52/Resources が欠落しておる. どうも,

$(gsdir)/$(GS_DOT_VERSION)/Resource
=$(datarootdir)/ghostscript/$(GS_DOT_VERSION)/Resource
=$(prefix)/share/ghostscript/$(GS_DOT_VERSION)/Resource
=/usr/local/share/ghostscript/$(GS_DOT_VERSION)/Resource

にインストールするものらしいな.LICENSEに書いてあるものによると,Adobe殿のご好意によりResourcesフォルダーはAGPLライセンスで公開されているものであるそうだ.でもコピーライト情報は,入れとかねえよヤバげだよね.というわけでこうする:

fswatch -x /usr/local/ >  log2 &
sudo cp -rv  Resource/ /usr/local/share/ghostscript/9.52/Resource
sudo cp -rv iccprofiles/ /usr/local/share/ghostscript/9.52/iccprofiles
sudo cp LICENSE /usr/local/share/ghostscript/9.52/
fswatch_analyze.sh -c _resource log2
pkgbuild --identifier ghostscript-libs --root _resource ghostscript-9.52-libs-osx10.15.pkg

ま,ええんでないかい.使ってみて問題があったら,また考える.

File attachments