2011年06月16日

Wineで動作中のアプリケーションからPDFを出力する方法

こういうバッドノウハウはすぐに古びて不要になるとは思うのだけれど、当面は必要なので備忘として。

WineはUbuntuでWindowsのアプリケーションを動作させてくれる便利なものだけれど、実際にはそれほど使う場面は多くない。

Wineで動作するアプリで重宝させてもらっているのが、MS公認のWord ViewerとPowerPoint Viewerだ。WordやPPTの書類は、最近では私の仕事の基本的なフォーマットになっていて、しょっちゅう受け取る。ただ、最近はOpenOffice(LibreOffice)の互換精度がいいので、ほとんどLibreOfficeで処理して問題はない。MS Officeでなければどうしようもなくて仮想環境を立ち上げるというようなことは、ごく稀にしか起こらない。

けれど、もらった文書がその「稀」なケースに当てはまるかどうかはきちんと判断しなければならない。そんなとき、いちいち互換環境に入らなくても、WineでMS公認のViewerを起動すれば、ほぼ完全にWordやPowerPointの表示が再現される。これを見て特殊な作りこみがされていないかどうかを確認するわけだ(もっともこれらViewerは基本的にはOffice 2003の仕様なので、Office 2007や2010と100%互換と言えないところがあるのは否めないのだけれど)。

ということでこの話は終わりなのだけれど、たまにこのOfficeのViewerからPDFが出力できたらなと思うことがある。せっかくレイアウトが再現されているのだから、そのままPDFを出力すれば、MS環境の人が出力するのと同じ結果が得られることになる。けれど、これがなかなかうまくいかなかった。

Windows環境でPDFを出力するには本家であるAdobeのAcrobatを使えばいいのだけれど、有料のそのソフトでなくとも、さまざまなPDF出力用のフリーウェアがある。むかしWindowsを使っていたときには、そういうのを愛用していた。基本的にはLinuxで使われているのと同じGhost Scripの応用らしい。

ところが、こういったPDF出力用のソフト(たいていは印刷ダイアログから使う)が、Wineではうまく動作しない。たぶんUbuntu本来の印刷機能とバッティングするのだろう。回避策があるのかもしれないが、わからない。

最近のMS OfficeにはPDF出力がネイティブで備わっているが、古いMS OfficeやそれをベースにしたViewerには、そういう機能はない。出力用のフリーウェアも機能しないとなっては、八方塞がりで、以前に少し悩んで「これはできないんだな」と諦めていた。

けれど、昨日、いろいろいじっていて限定的ながらこれが可能なことを知った。た

まず、PowerPoint Viewerの場合、これは単純だった。PowerPoint ViewerでPPT文書をひらくとスライドショーになるが、これを右クリックで印刷ダイアログが出る。ここで「プリンタ」の部分に「ファイルへ出力」というオプションがあるからこれにチェックを入れる。すると出力ファイル名を聞かれるので、ファイルを保存。この保存したファイルはps拡張子のついたPostScriptファイルになっているけれど、UbuntuのPDFビューワーであるevinceはPSファイルも開くことができるので全く問題なく開くことができる。必要に応じて、そこからさらに印刷ダイアログで「ファイルに保存」からPDF形式を選択すれば、最終的なPDFファイルが得られる。

Word Viewerの場合、もう少し話が面倒になる。印刷ダイアログに「ファイルへ出力」のチェックボックスがないからだ。以前は、ここで諦めていた。けれど、強引な方法がある。パソコンにプリンタを接続せず(あるいは接続されていないプリンタを選択し)、かまわずに印刷の「OK」を押す。すると、印刷キューに入った出力ファイルが/var/spool/cups/に保存される。このディレクトリは管理者権限でなければ入れない。管理者として入った後、対象となるファイルを探し出してPDFビューワーで開く。なぜかevinceではなくOkularで開いたけれど、その理由はよくわからない。ここで開いた文書を別名でユーザー権限のあるところに保存すればOK。これはやはりPostScriptファイルなので、あとの処理は上記と同じ。このあと、プリンタジョブのユーティリティから印刷をキャンセルしておくこと。キャンセルすると/var/spool/cups/の一時ファイルも消去される。

とまあ、やや面倒な方法であるけれど、Wine上で動くMS ViewerからPDFを得る方法が存在することがわかった。確認はしていないけれど、たぶん他のWine上で動作するアプリケーションでも同じことになるだろう。

ただ、問題はあって、こうやって得られたPDFファイル、PSデータを経由している関係で、テキストをテキストとして読むことができない。Inkscapeで開いても再現されないので、どういう形式で保存されているのかよくわからない厄介なものになっている。画像としてみる分にはOKなので用途によってはこれで十分だろうけれど、たとえばテキストを使いまわしたいような場合にはこれではうまく行かない。

ということで、完璧な方法ではないし、なによりもかなりまだるっこしい裏技、どちらかといえばバッドノウハウに分類されるようなものなので、あまり参考になるとは思えない。それでも、必要なときがあるかもしれないので、一応記事にしておこう。






posted by 松本 at 13:47| Comment(2) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして

とても面白いアイデアで参考になりました。ありがとうございます。

ところで、cups-pdfをご存知でしょうか?これを使えば、プリンタとして、pdfを出力してくれる仮想プリンタができるので、word-viewerからでもpdfをはきだせると思います。

ためしにExcel viewerでやってみてうまくいきました。これは便利ですね。
xournalとかでpdfを編集するとかもありでしょうし。windowsユーザにいやがられそうですが。
Posted by masashi.Mizuno.chestnut at 2011年06月17日 20:29
masashi.Mizuno.chestnutさん、コメントありがとうございます。cups-pdfは知りませんでした。早速試してみたら、この記事の半分が不要になるありがたいツールでした。ご教示大変ありがとうございます。今度、ネタにさせていただきます。助かりました。

なお、重複していただいたコメント、別記事の方を削除させていただきました。悪しからずご了承ください。
Posted by 松本 at 2011年06月17日 22:20
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック