From: rpd <richard@dickinson350.freeserve.co.uk>
To: Help-gnu-emacs@gnu.org
Subject: Re: Help to view .doc files with no-word.el & antiword please
Date: Tue, 25 Aug 2009 14:34:12 -0700 (PDT) [thread overview]
Message-ID: <25142529.post@talk.nabble.com> (raw)
In-Reply-To: <87r5v1ime4.fsf@lion.rapttech.com.au>
Hi Tim X-2
Thanks for your txutils.el
I will give it a try as soon as I can & if I get any problems I will post
here!
Many thanks, regards
Tim X-2 wrote:
>
> rpd <richard@dickinson350.freeserve.co.uk> writes:
>
>> Hi
>> I am trying to use no-word.el & antiword.exe to view .doc files in Emacs
>> but
>> unsuccessfully at the moment.
>> I have had a recent post with knubee on this but I still need help.
>>
>> Here is my .emacs code:
>>
>
> Although not a direct solution, you may find the following useful. I use
> it to convert various different formats to text for viewing within
> emacs.
>
> ;; Filename: /home/tcross/projects/emacs-convert/txutils.el
> ;; Creation Date: Wednesday, 20 September 2006 10:13 PM EST
> ;; Last Modified: Monday, 21 January 2008 01:15 PM EST
> ;; Version: 2.0
> ;; Author: Tim Cross <tcross@une.edu.au>
> ;; Description: Convert files from doc, ps, pdf, ppt to a format
> ;; which can be viewed within emacs (i.e. text or html)
>
> ;;; Copyright (C) 2006. Tim Cross <tcross@une.edu.au>
> ;;; All Rights Reserved.
> ;;;
> ;;; This file is not part of GNU Emacs, but the same permissions apply.
> ;;;
> ;;; GNU Emacs is free software; you can redistribute it and/or modify
> ;;; it under the terms of the GNU General Public License as published by
> ;;; the Free Software Foundation; either version 2, or (at your option)
> ;;; any later version.
> ;;;
> ;;; GNU Emacs is distributed in the hope that it will be useful,
> ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
> ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> ;;; GNU General Public License for more details.
> ;;;
> ;;; You should have received a copy of the GNU General Public License
> ;;; along with GNU Emacs; see the file COPYING. If not, write to
> ;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
> ;;;
> ;;; Commentary
> ;;; ==========
> ;;;
> ;;; The very simple idea behind this basic utility is to make accessing
> ;;; files in .doc, .pdf, .ps and .ppt more easily accessible without
> ;;; having to leave emacs or manually convert the file format prior
> ;;; to being able to view the contents in emacs.
> ;;;
> ;;; There are packages which will enable calls to external viewers
> ;;; for files of specific formats, such as xpdf for pdf etc. However,
> ;;; I wanted to have everything within emacs as this makes integration,
> ;;; cutting/pasting etc a lot easier, plus as a blind user, most
> ;;; external utilities are of little use because they don't also include
> ;;; speech support.
> ;;;
> ;;; The objective here is to have things setup so that when browsing
> ;;; a directory with dired, you can just hit 'v' for any file you want to
> ;;; view and you will be presented with a text or html version without
> ;;; needing to do any manual conversion - or even careing about what
> ;;; would need to be done.
> ;;;
> ;;; You need the following packages (or at least utilities which will
> ;;; do the same thing). Most of these are fairly standard with many Linux
> ;;; distros these days.
> ;;; The wv utilities which contain wvText for converting MS Word docs
> ;;; The xpdf utilities which include pdftotext for converting PDF to text
> ;;; The Ghostscript package which contains pstotext for converting PS to
> text
> ;;; The ppthtml utility for converting MS Power Point files to html
> ;;; A configured and working browse-url setup. I use w3m as my browser
> ;;;
> ;;; Customizing
> ;;; ===========
> ;;;
> ;;; The easiest way to customize the conversion utility settings is to
> ;;; use M-x customize-group <RET> txutils <RET>
> ;;;
> ;;; In the txutils customize group, you will find just one setting, which
> ;;; is an alist of values indexed by a regular expression that matches
> against
> ;;; file extensions - a crude way of determining the source filetype
> ;;; (i.e. *.doc, *.pdf, *.ps, *.ppt, *.xls, *.html etc). See the
> ;;; documentation for more details.
> ;;;
> ;;; Installation
> ;;; ============
> ;;;
> ;;; Pretty straight forward. Place this file somewhere in your load path
> ;;; and put a (require 'txutils) in your .emacs. You may want to byte
> ;;; compile this file.
> ;;;
> ;;; Thanks
> ;;; ======
> ;;;
> ;;; A number of people provided suggestions on how to improve both my
> elisp
> ;;; and the program itself. In particular, thanks goes to
> ;;; Lukas Loehrer
> ;;; Vinicius Jose Latorre
> ;;; Andreas Roehler
> ;;;
> ;;; plus a few others who gave general suggestions, feedback and
> ;;; encouragement. Thanks to everyone for taking the time and putting
> ;;; in the effort, its greatly appreciated.
> ;;;
> ;;; Reporting Bugs
> ;;; ==============
> ;;;
> ;;; This is the first bit of elisp I've allowed out into the world and
> ;;; while I am really learning to love both elisp and cl lisp, I'm still
> ;;; very much a novice. Therefore, there IS bugs and probably some pretty
> ;;; poor style within this stuff. Feedback, bug reports and suggestions
> ;;; always welcome. Send e-mail to tcross@une.edu.au
> ;;;
> ;;; Emacspeak Users Note - I've not attempted to enhance this code to
> provide
> ;;; better spoken or audio icon feedback. When the code matures a bit and
> ;;; once I get some feedback, I will see if a re-worked version can be
> ;;; included in emacspeak. In the meantime, feel free to use 'advice' to
> ;;; improve things.
>
> (require 'custom)
> (require 'browse-url)
>
> ; make-temp-file is part of apel prior to emacs 22
> ;(static-when (= emacs-major-version 21)
> ; (require 'poe))
>
> (defgroup txutils nil
> "Customize group for txutils."
> :prefix "txutils-"
> :group 'External)
>
> (defcustom txutils-convert-alist
> '( ;; MS Word
> ("\\.\\(?:DOC\\|doc\\)$" doc "/usr/bin/wvText" nil nil nil nil
> nil)
> ;; PDF
> ("\\.\\(?:PDF\\|pdf\\)$" pdf "/usr/bin/pdftotext" nil nil nil nil
> nil)
> ;; PostScript
> ("\\.\\(?:PS\\|ps\\)$" ps "/usr/bin/pstotext" "-output" t nil
> nil nil)
> ;; MS PowerPoint
> ("\\.\\(?:PPT\\|ppt\\)$" ppt "/usr/bin/ppthtml" nil nil nil t
> t))
>
> "*Association for program convertion.
>
> Each element has the following form:
>
> (REGEXP SYMBOL CONVERTER SWITCHES INVERT REDIRECT-INPUT REDIRECT-OUTPUT
> HTML-OUTPUT)
>
> Where:
>
> REGEXP is a regexp to match file type to convert.
>
> SYMBOL is a symbol to designate the fyle type.
>
> CONVERTER is a program to convert the fyle type to text or HTML.
>
> SWITCHES is a string which gives command line switches for the
> conversion
> program. Nil means there are no switches needed.
>
> INVERT indicates if input and output program option is to be
> inverted or not. Non-nil means to invert, that is, output
> option first then input option. Nil means do not invert,
> that is, input option first then output option.
>
> REDIRECT-INPUT indicates to use < to direct input from the input
> file. This is useful for utilities which accept input
> from stdin rather than a file.
>
> REDIRECT-OUTPUT indicates to use > to direct output to the output
> file. This is useful for utilities that only send output to
> stdout.
>
> HTML-OUTPUT Indicates the conversion program creates HTML output
> rather than plain text."
>
> :type '(repeat
> (list :tag "Convertion"
> (regexp :tag "File Type Regexp")
> (symbol :tag "File Type Symbol")
> (string :tag "Converter")
> (choice :menu-tag "Output Option"
> :tag "Output Option"
> (const :tag "None" nil)
> string)
> (boolean :tag "Invert I/O Option")
> (boolean :tag "Redirect Standard Input")
> (boolean :tag "Redirect Standard Output")
> (boolean :tag "HTML Output")))
> :group 'txutils)
>
> (defun txutils-run-command (cmd &optional output-buffer)
> "Execute shell command with arguments, putting output in buffer."
> (= 0 (shell-command cmd (if output-buffer
> output-buffer
> "*txutils-output*")
> (if output-buffer
> "*txutils-output*"))))
>
> (defun txutils-quote-expand-file-name (file-name)
> "Expand file name and quote special chars if required."
> (shell-quote-argument (expand-file-name file-name)))
>
> (defun txutils-file-alist (file-name)
> "Return alist associated with file of this type."
> (let ((al txutils-convert-alist))
> (while (and al
> (not (string-match (caar al) file-name)))
> (setq al (cdr al)))
> (if al
> (cdar al)
> nil)))
>
> (defun txutils-make-temp-name (orig-name type-alist)
> "Create a temp file name from original file name"
> (make-temp-file (file-name-sans-extension
> (file-name-nondirectory orig-name)) nil
> (if (nth 7 type-alist)
> ".html"
> ".txt")))
>
> (defun txutils-build-cmd (input-file output-file type-alist)
> "Create the command string from conversion alist."
> (let ((f1 (if (nth 3 type-alist)
> output-file
> input-file))
> (f2 (if (nth 3 type-alist)
> input-file
> output-file)))
> (concat
> (nth 1 type-alist)
> (if (nth 2 type-alist) ; Add cmd line switches
> (concat " " (nth 2 type-alist)))
> (if (nth 4 type-alist) ; redirect input (which may be output
> (concat " < " f1) ; if arguments are inverted!)
> (concat " " f1))
> (if (nth 5 type-alist) ; redirect output (see above comment)
> (concat " > " f2)
> (concat " " f2)))))
>
> (defun txutils-do-file-conversion (file-name)
> "Based on file extension, convert file to text. Return name of text
> file"
> (interactive "fFile to convert: ")
> (let ((f-alist (txutils-file-alist file-name))
> output-file)
> (when f-alist
> (message "Performing file conversion for %s." file-name)
> (setq output-file (txutils-make-temp-name file-name f-alist))
> (message "Command: %s" (txutils-build-cmd file-name output-file
> f-alist))
> (if (txutils-run-command
> (txutils-build-cmd (txutils-quote-expand-file-name file-name)
> (txutils-quote-expand-file-name
> output-file) f-alist))
> output-file
> file-name))))
>
> (defadvice view-file (around txutils pre act comp)
> "Perform file conversion or call web browser to view contents of file."
> (let ((file-arg (ad-get-arg 0)))
> (if (txutils-file-alist file-arg)
> (ad-set-arg 0 (txutils-do-file-conversion file-arg)))
> (if (string-match "\\.\\(?:HTML?\\|html?\\)$" (ad-get-arg 0))
> (browse-url-of-file (ad-get-arg 0))
> ad-do-it)))
>
> (provide 'txutils)
>
>
>
> --
> tcross (at) rapttech dot com dot au
>
>
--
View this message in context: http://www.nabble.com/Help-to-view-.doc-files-with-no-word.el---antiword-please-tp25102080p25142529.html
Sent from the Emacs - Help mailing list archive at Nabble.com.
next prev parent reply other threads:[~2009-08-25 21:34 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.5189.1251023783.2239.help-gnu-emacs@gnu.org>
2009-08-23 10:50 ` Help to view .doc files with no-word.el & antiword please Joost Kremers
[not found] ` <slrnh94hka.kph.joostkremers@j.kremers4.news.arnhem.chello.nl>
[not found] ` <slrnh94n0a.kph.joostkremers@j.kremers4.news.arnhem.chello.nl>
[not found] ` <mailman.5240.1251110919.2239.help-gnu-emacs@gnu.org>
2009-08-25 7:20 ` Joost Kremers
2009-08-25 11:51 ` rpd
[not found] ` <mailman.5300.1251201164.2239.help-gnu-emacs@gnu.org>
2009-08-25 12:20 ` Joost Kremers
2009-08-25 16:35 ` rpd
2009-08-25 17:01 ` rpd
[not found] ` <mailman.5329.1251219674.2239.help-gnu-emacs@gnu.org>
2009-08-26 6:50 ` Joost Kremers
2009-08-25 18:44 ` Eli Zaretskii
[not found] ` <87r5v1ime4.fsf@lion.rapttech.com.au>
[not found] ` <slrnh94o4t.kph.joostkremers@j.kremers4.news.arnhem.chello.nl>
2009-08-25 5:44 ` Tim X
2009-08-25 21:34 ` rpd [this message]
2009-08-23 10:36 rpd
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=25142529.post@talk.nabble.com \
--to=richard@dickinson350.freeserve.co.uk \
--cc=Help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.