2011年6月17日金曜日

wineとcups-pdfとMS Office ファイルたち

MS OfficeのファイルをLinuxの上だけで、pdfにかえてしまう方法がわかったのでまとめておく。

まず、wineをインストールし、winecfgを起動させる。そしたら、

wine notepad

として, notepadを起動し, 編集→フォントとして, フォントを適当に変更させておく.

効果があるかはわからないけど, .wine/drive_c/windows/Fonts/の中に適当にフォントのシンボリックリンクをいれておいた(ipaフォントとか).

次に, MS Office viewer (Word viewer, Excel viewer, Powerpoint viewer)とかをダウンロードして, たとえば

wine PowerPointViewer.exe

などとして, インストールする. 文字化けしてたりするが, 気にしないことにする.

そしたら, 例えば .wine/drive_c/Program Files/Microsoft Office/OFFICE11 の中にWORDVIEW.EXEがあるから

wine WORDVIEW.EXE

とすれば, word ファイルが読める.

debianではxournalがあるから, pdfファイルに何かを書き込むのは, 簡単にできる. だから, 読みこんだファイルをpdfで書き出してしまえばよい. これはmatsumoto さんのアイデアをちょっと考えていたら, pdfに出力する仮想プリンタを用意すればいいじゃないかということに気がついて, やってみたら, うまくいったというお話.

実際, Linuxは比較的pdfと相性がよい. というよりは, よくなったというのが正しい言い方. 最近のguiのプログラムは印刷するときに, pdfファイルとして書き出すことができる. しかし, windowsはそうもいかない. なら, 仮想プリンタを用意すればよいので, cups-pdfをインストールすればよい.

追記: cups-pdfでppdファイルをこちらで指定すると, 文字の認識も日本語こみでうまくいくみたい. 例えば, Brotherのポストスクリプトプリンタのppdファイルを使ったらうまくいった. おそらく, デフォルトのppdファイルは日本語の面倒を見てくれない様子. そして, cups-pdfの実装については, この記事が詳しい.

# つまり, psファイルの時点で, 文字情報が残っていれば, pdfでも文字情報が残ってくれるだろうという気がする.

ちょっと疑問に感じたことをひとつ. Linux上でcups-pdfは何のために使うのだろう.

debian Linuxでadobe readerの印刷

ちょっと落とし穴にはまったので, ログを書いておく.

adobe readerは debian-multimediaからインストールするのが簡単

/etc/apt/source.listに

deb http://www.debian-multimedia.org squeeze main non-free

を追加して

sudo aptitude update

とする. 文句を言われるが, 気にせずに

sudo aptitude install debian-multimedia-keyring

として, debian-multimedia-keyringをインストールする. そしたら,

sudo aptitude update
sudo aptitude install acroread acroread-l10n-ja

とすれば, acroread一式がインストールできる.

印刷をするためには, cups-bsdが必要. これではまった. acroreadはlprを使って印刷するのだが, 最小構成からインストールすると, cups-bsdをインストールしていないことがある. 実際にcupsだけをインストールしたときは, cups-bsdはインストールされない(suggestはされる). また, lprをインストールしても, acroreadはcupsでの印刷を前提にしてコマンドを用意するため, オプションがあわずに失敗する. これに気がつかずになかなか苦労した.

ちなみに, acroreadが必要になったのは, 紙のサイズに合わせた拡大, 縮小をしてから印刷したかったため. acroreadを使わずに印刷する方法はあるのだろうか?pdfを見るだけなら, okularがお勧め. 余白を消去してくれるビューアはありそうでなかった機能. androidとかでこの機能のついたpdf viewerがあったら, 人気になること間違いないだろうな.