Emacsでの日本語印刷

あんまりEmacsで印刷ってしなかったのです。で、どうやるのかな、と調べてみた所、

M-x print-buffer

としたら、わりとさくっとプリントアウト出来たので、まあいいかと思ったのですが、普段はエディタから出力するようなものは、紙がもったいないので、2面付けとか両面印刷にしているのですが、そういうダイアログなしで一気にプリンタに送っちゃうんですね。

どうするといいのかしら、と調べてみた所、以下サイトで詳しく教えてくれていました。ありがとうございます。

Cocoa Emacs(24.3)での日本語印刷 – tamo's blog
https://tamosblog.wordpress.com/2013/12/11/cocoa-emacs24_print/

いったんpostscriptにして、MacのデフォルトアプリケーションのPreview.appで開く、それからプリントアウトする、という手です。

僕は、環境の相違から上記サイトのままでは動かなかったので、以下のようにしました。

pdf-preview.el

まずは、pdf-preview.elを入手し、requireできる所に置きます。

http://en.sourceforge.jp/projects/macemacsjp/scm/svn/blobs/head/pdf-preview/trunk/pdf-preview.el

人によっては、次の3行だけでいけるのかもしれません。

(setq ps-multibyte-buffer 'non-latin-printer)
(require 'ps-mule)
(defalias 'ps-mule-header-string-charsets 'ignore)

日本語の文字化け

僕は、日本語のファイルが化けてしまったので、以下措置をしました。

terminal.appで、

locate ghostscript|grep "CIDFont"

で、自分のghostscriptのフォントの場所を探しでcdします。僕の場合は、Macportで入れていて、以下のディレクトリでした。

cd /opt/local/share/ghostscript/9.19/Resource/CIDFont

さきほどのページにならって、シンボリックリンクをはります。

sudo ln -s /System/Library/Fonts/ヒラギノ角ゴ\ ProN\ W3.otf HiraKakuProN-W3
sudo ln -s /System/Library/Fonts/ヒラギノ角ゴ\ ProN\ W6.otf HiraKakuProN-W6
sudo ln -s /System/Library/Fonts/ヒラギノ明朝\ ProN\ W3.otf HiraMinProN-W3
sudo ln -s /System/Library/Fonts/ヒラギノ明朝\ ProN\ W6.otf HiraMinProN-W6

また、さきほどの処理と同じく、以下ディレクトリを探します。

locate ghostscript|grep "Resource/Font"

cd /opt/local/share/ghostscript/9.19/Resource/Font

これより下は、viでファイルを作った後、続く文字列をそのファイルの内容とする、という関係です。

sudo vi Ryumin-Light-H

/Ryumin-Light-H
/H /CMap findresource
[/HiraMinProN-W3 /CIDFont findresource]
composefont pop

sudo vi Ryumin-Light-V

/Ryumin-Light-V
/V /CMap findresource
[/HiraMinProN-W3 /CIDFont findresource]
composefont pop

sudo vi GothicBBB-Medium-H

/GothicBBB-Medium-H
/H /CMap findresource
[/HiraKakuProN-W3 /CIDFont findresource]
composefont pop

sudo vi GothicBBB-Medium-V

/GothicBBB-Medium-V
/V /CMap findresource
[/HiraKakuProN-W3 /CIDFont findresource]
composefont pop

.emacs

.emacsには、次のようにしています。

(when (load-file (concat "path/to/" "pdf-preview.el"))
 (require 'pdf-preview)
 (setq pdf-preview-preview-command "open -a Preview.app")
 (global-set-key (kbd "s-P")
         (lambda ()
          (interactive)
          (when (and
              (yes-or-no-p "Show current buffer by Preview.app?")
              (or
              (<= (length (buffer-string)) 10000)
              (and (> (length (buffer-string)) 10000)
                 (yes-or-no-p "Current buffer is large. Preview takes quite time. Preview this?"))))
           (pdf-preview-buffer)))))

数万字のファイルだと、フリーズした? というくらい時間がかかったので、動作時に確認するようにしています。また、Macなので、cmd+shift+sといういかにもMacっぽいキーバインドをあてています。

ジャンル: EmacsMac