MacOS XでPDFを作る

MacOS Xではプリントダイアログで「PDFとして保存」をクリックするだけで、特別な設定なしにPDFファイルを作成できます。でも、出来上がったものはサイズが大きくて、配付するのに向いていません。試しにA4・1ページ・文字のみの文書をPDFにしたら、600kbytesぐらいになってしまいました。

もちろんAdobe Acrobatを使えば自由自在なのですが、「見るだけ、印刷するだけ」のPDFならば、無料で作ることが出来ます。ただし、UNIXの知識が必要です。

やってみたらなかなか複雑な手順だったので、メモを兼ねて方法をご紹介します。ただし、MacOS Xバージョンは10.2以降が対象です。

使用するのはオープンソースで公開されているSAMBAとghostscript(それもMacOS Xに最適化されたもの)というUNIX用ソフト、それとプリンタのPPDファイルです。
SAMBAはWindowsとのファイル・プリンタ共有に使われるソフト。
ghostscriptはPostScript言語で書かれた印刷データを表示・印刷するソフト。また、PostScriptをPDFに変換する機能も持っています。
PPDファイルはプリンタドライバの一種と思ってください。プリンタメーカーのドライバダウンロードページなどから入手できます。このコラムを読むと、どんなものか分かると思います。
SAMBAで共有しているプリンタは、データの流れを自由に操れます。データをプリンタに送るだけでなく、他のソフトに渡すこともできるのです。アプリケーションから印刷をすると共有プリンタにPostScriptデータが送られるのですが、それをプリンタではなくGhostScriptに渡し、PDFファイルに変換させるということをします。
ですので、本物のプリンタは必要ありません。PPDファイルを使用するので、ライセンス上は必要かもしれません。
まずはSAMBAの設定をします。SAMBAはMacOS Xバージョン10.2以降のシステムには組み込まれていますので、インストールの必要はありません。Windowsからファイルを共有できるように設定します(それ以前のバージョンでも、MacOS X用のSAMBAを入手してインストールすればできると思います。ただし、Windowsから共有できるように設定する方法が以下とは違うと思います)

  • システム環境設定の「共有」を開く
  • サービスタブの「Windowsファイル共有」を「開始」する
  • システム環境設定の「アカウント」を開く
  • 自分のユーザー名を選択し、「ユーザーを編集」をクリック
  • 一番下の「ユーザーがWindowsからログインするのを許可する」をチェックする

次に、アプリケーションから渡された印刷データをghostscriptに渡すようにSAMBAを設定します。ここからUNIXの知識が少し必要です。

  • 「ターミナル」を起動し、sudo chmod 666 /etc/smb.confを実行する

    (パスワードを聞かれるので管理者(普通は自分)のパスワードを入力してください)
  • テキストエディタで/etc/smb.confを開く(エディタは何でもかまいません)
  • 以下の文を最後部に追加して保存する

    [pdfwrite]

    comment = PDF Writer

    path = /users/Shared/pdfwrite/pdfwork

    printable = Yes

    print command = /users/Shared/pdfwrite/bin/pdfwrite %s %m &

  • 「ターミナル」でsudo chmod 644 /etc/smb.confを実行する
  • 「ユーザー」-「共有フォルダ」内にpdfwriteフォルダを作る
  • 上記pdfwriteフォルダ内にpdfwork、bin、pdfoutフォルダを作る
  • 今作ったbinフォルダに「pdfwrite」という名前のテキストファイルを作る
  • テキストエディタでpdfwriteを開き、以下の文を入力して保存する

    #!/bin/sh

    #

    # pdfwrite

    #

    outdir=/users/Shared/pdfwrite/pdfout

    workdir=/users/Shared/pdfwrite/pdfwork

    psname=$1

    client=$2

    pdfname=${workdir}/`basename ${psname}`.pdf

    msgname=${workdir}/`basename ${psname}`.msg

    /usr/local/bin/ps2pdfwr $psname $pdfname > $msgname

    mv $pdfname $outdir

    echo PDF File Created : `basename $pdfname` >> $msgname

    cat $msgname | /usr/bin/smbclient -M $client

    rm -f $psname $msgname

  • 「ターミナル」でchmod +x /user/Shared/pdfwrite/bin/pdfwriteを実行する
  • 「ターミナル」でsudo chmod 777 /usr/local/bin/ps2pdfwrを実行する
  • テキストエディタで/usr/local/bin/ps2pdfwrを開く
  • 最下行の「exec gs $OPTIONS云々」のgsの前に「usr/local/bin/」を付け加えて保存する(「exec /usr/local/bin/gs $OPTIONS云々」になる)
  • 「ターミナル」でsudo chmod 755 /usr/local/bin/ps2pdfwrを実行する
  • 「ターミナル」でsmbd restartを実行する

これでSAMBAの設定は終わりです。
次はghostscriptをインストールして設定します。

  • JIS X0212 for pTeXからGNU ghostscript 7.05 for MacOSXをダウンロードします。ページの中程にあります。より新しいバージョンのものがあればそれをダウンロードします。
  • ダウンロードしたディスクイメージをマウントする
  • GNUghostscript7.05.pkgをダブルクリック
  • インストーラが起動するので指示に従ってインストール
  • SAMBAenablerをダブルクリック

最後に、プリントセンターにプリンターを登録します。

  • PPDファイルを入手しインストールする
    インストーラが付属しているか、PPDファイルを直接ダブルクリックするだけだと思います。
    私はRICOHのカラーレーザーを使っているので、それ用のをダウンロードしました。当然ですが、モノクロプリンタ用のPPDファイルではカラーのPDFは作れません
  • 「プリントセンター」を起動し、optionキーを押しながら「追加」をクリックする
  • 一番上のリストから「詳細」を選ぶ
  • 「装置」から「Windows Printer via SAMBA」を選ぶ
  • 「装置名」に「PDFWrite」を入力する
  • 「装置のURl」に「smb://user:pass@127.0.0.1/pdfwrite」を入力。userとpassには自分のユーザー名とパスワードを入力します
  • 「プリンタの機種」にはダウンロードしたPPDファイルのプリンタを指定します。リストからメーカー名を指定すると、プリンタの一覧が表示されるはずです
  • 「追加」をクリックする

以上で全ての設定は終了です。どんなアプリケーションでもかまわないので、メニューから「印刷」をクリックして、プリントダイアログを出してみてください。PDFWriteという名前のプリンタが選べるはずです。
うまくいかない場合、一度再起動すると良いかもしれません。
PDFにしたい文書を開き、プリンタをPDFWriteに設定し「プリント」をクリックすれば、「共有フォルダ」-「pdfwrite」-「pdfout」にPDFファイルが作成されます(作成されるまでに数秒かかります)。無事に出来ていれば完了です。
最初に試したのと同じA4・1ページ・文字のみの文書をこの方法でPDFにしたら、50kbytes弱と、10分の1以下になりました。これならメールで配布するのにも気兼ねしなくて良いですね。
本当はPDFが出来上がるとメッセージが表示されるはずなのですが(pdfwriteファイルの中で指定しています)、Macだとこの方法は通用しないみたいです。これはこれからの課題です。

コメント

zenback

このブログの人気の投稿

IPv6(IPoE)でようやくVPN復活

DuraSpeedとかHuaweiの電源管理とか、やめてくれ

AirPods Pro、Apple Watchのトランシーバーアプリで楽しめる