2011年1月25日

[mew-dist 29313] Re:テキスト付きPDFをinlineで読むには

白井です。

From: Harumitsu YOSHITAKE <yositake@xxxxx> さん曰く
Subject: [mew-dist 29312] テキスト付きPDFをinlineで読むには
Message-ID: <20110124.155953.115217423357281610.yositake@xxxxx>
Date: Mon, 24 Jan 2011 15:59:53 +0900 (JST)

> Ubuntu Server 10.10 上の mew を ssh 経由で使っています。

>
> メールに添付された Word や Excel の文字情報だけをinline で見
> るのに wvHtml などの設定をして重宝しています。
>
> さて、透明テキスト付きPDFの文字情報を inline で読むためには、
> どのようにプログラムを書けば良いでしょうか?
>
> wvHtml の処理付近を参考にして pdftotext を呼ぶようにすれば可
> 能と思うのですが、私の技量では開発に時間がかかりすぎます。
>
> どなたか、既に、elisp を書かれているようでしたら、公開して頂
> けないでしょうか?

# 自分の環境だけで動かしているだけなので、何なのですが。。

こんなのを使っています。ちょっと環境が古いので今の pdftotext で
動くか分かりません。また、pdf2txt (確か perl script) とかも使っ
ていました。ご参考までに。

ただし、PDF はやっぱりちゃんとした Viewer で見た方が見やすいです
けど。

;; (setq mew-prog-pdf 'mew-mime-application/pdf)
(setq mew-prog-pdf '(nil mew-mime-application/pdf))
(setq mew-prog-application/pdf "pdftotext")

(defvar my-pdftotext-new t)

(defun mew-mime-application/pdf-ext (cache begin end &optional parameter)
(with-current-buffer (mew-buffer-message)
(mew-elet
(mew-erase-buffer)
(mew-mime-application/pdf cache begin end parameter)
(mew-summary-display-postscript 'nohook))))

(defun mew-mime-application/pdf (cache begin end &optional parameter)
(mew-erase-buffer)
(let ((doit t) file1 file2
(prog mew-prog-application/pdf))
(unless (mew-which-exec prog)
(setq doit nil)
(mew-elet (insert "Install " prog "\n")))
(if (not doit)
(progn
(mew-elet (insert "\n"))
(mew-mime-part-messages nil))
(setq file1 (mew-make-temp-name))
(with-current-buffer cache
(mew-flet
(write-region begin end file1 nil 'no-msg)))
(setq file2 (mew-make-temp-name))
(if (string= prog "pdf2txt")
(mew-frwlet
'shift_jis mew-cs-dummy
(call-process prog nil (current-buffer) nil "-s" file1))
(mew-frwlet
'euc-japan mew-cs-dummy
(if my-pdftotext-new
(call-process prog nil nil nil "-raw" "-enc" "EUC-JP" file1 file2)
(call-process prog nil nil nil "-raw" "-eucjp" file1 file2))
(if (file-exists-p file2)
(insert-file-contents file2)
;; passwd?
(mew-frwlet
'shift_jis mew-cs-dummy
(call-process "pdf2txt" nil (current-buffer) nil "-s" file1)))))
;; (japanese-hankaku-region (point-min) (point-max) 'ascii)
(if (file-exists-p file1) (delete-file file1))
(if (file-exists-p file2) (delete-file file2)))))

--
白井秀行 (mailto:shirai@xxxxx)


投稿者 xml-rpc : 2011年1月25日 21:05
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/101574
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。