再び桐原です.
メールに添付された PDF を DocViewモード など emacs内 で
見れるようにするには,どうしたらよろしいでしょうか?
================================================================
--- mew-mime.el.orig Mon Jul 02 20:17:44 2018
+++ mew-mime.el
@@ -596,15 +596,18 @@
(mew-mime-part-messages t)
(message "Displaying a PDF document...failed"))
(setq file1 (mew-make-temp-name))
+ (setq file1 (concat file1 ".pdf"))
(with-current-buffer cache
(mew-flet
(write-region begin end file1 nil 'no-msg)))
(setq file2 (mew-make-temp-name))
(call-process prog nil nil nil "-layout" "-enc" "UTF-8" file1 file2)
+(if (not t) ;;;;;; Set t if viewing pdf. Set nil if viewing text.
(when (file-exists-p file2)
(mew-frwlet 'utf-8 mew-cs-dummy
(insert-file-contents file2)))
- (if (file-exists-p file1) (delete-file file1))
+(find-file file1)) ;;;;;; To view pdf under doc-view mode
+; (if (file-exists-p file1) (delete-file file1))
(if (file-exists-p file2) (delete-file file2))
(message "Displaying a PDF document...done"))))
================================================================
とりあえずこの修正で DocViewモード で見れるようになりますが,
<0> (あたりまえのことですが,DocViewモード が使えるようにするため,
Ghostscript をインストールする必要がある.)
<1> 上記の修正では t/nil がハードコーディングされている.
<2> 使っていない pdftotext がインストールされていないといけない.
<3> メジャーモードで開いているためなのか,Mew/Emacs を終了する時,
開いている PDF のバッファを C-x C-b 等で消去しなければ
ゴミ として残ってしまう.
および,次のメールを見ようとした時,開いている PDF のウインドウは
そのままで,Summaryモード のウインドウを分割して
Summaryモード と Messageモード を表示しようとする.
# 当方,emacs lisp のプログラムを(本格的に)したことがないので,
# メジャーモードとかマイナモードとかはよく知らないです.
<4> emacs に付随している DocViewモード では,
それ専用の ディレクトリ/フォルダ を作り,
それはEmacs を終了する時には削除されない.
などといった点が非常に気になります.
<1> は,mew-vars.el かどこかのファイルに,例えば
(defvar mew-pdf-docview nil)
としておいて,~/.emacs.d/init.el とかに必要に応じて
(setq mew-pdf-docview t)
とすればいいと思っています.
# 変数名は適当に変えて定義してください.
<2> は上記の新たに定義した変数を使って適当に条件分岐等を変えたら,
うまく解決できると思っています.
<3> が一番の問題で,
上記の通り emacs lisp でプログラムしたことがないので,
どなたか解決して頂きたい,と思っています.
<4> は,例えば pdf-tools (
https://github.com/politza/pdf-tools ⇒
https://github.com/vedang/pdf-tools )
をインストールすれば解決できます.
(そして同時に <0> も解決できます.)
というところまでは出来たのですが,
誰か <3> (および <1>,<2>) を解決して頂けないでしょうか?
もしくは,修正のヒントを示して頂けないでしょうか?
################
経緯
PDF添付のメール は,当方 Windows を使っていることもあり fiber.exe を使って
添付された PDF を見ていました.
ある時,TeXLive をインストールしたら pdftotext もインストールされたようで,
テキストで見れるようになりました.
そして,TeXLive には ghostscript (とそのラッパー) があり,試しに PDFファイル を
emacs で開くと DocViewモード でPDF が見れることを確認しました.
ただ <4> のように ゴミ が残るので他の方法がないか探していたところ,
pdf-tools がよさげなので,Windows でなんとか使ってみたいと思っていました.
すると最近 msys2 でバイナリ (epdfinfo.exe) が更新されたようで,
pacman -S mingw-w64-x86_64-emacs-pdf-tools-server
としてバイナリをインストールし,MELPA Stable で emacs lisp をインストールすると
Windows(の MSYS2 MinGW x64)上 で pdf-tools が使えるようになりました.
## ちなみに poppler に依存しているので pdftotext.exe もインストールされます.
そこで,mew に PDF添付のメール の PDFの部分 を pdf-tools で見れるようにできないか,
と,mew に修正を加えました.
が,自分の力ではこれ以上のことはできず,この投稿に至った訳です.
よろしくお願いします.
---
KIRIHARA, Masaharu