summaryrefslogtreecommitdiff
path: root/lisp/doc-view.el
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2020-08-26 14:37:13 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2020-08-26 14:37:13 +0200
commitf68a8869d1b5d25855bdc5cb1654bb4c1b2a5cb2 (patch)
tree76413ac090bb855dd4f97951f4ceee54bebfa91d /lisp/doc-view.el
parentbe7af20e732db65c33f5d41402675a403416ce7b (diff)
downloademacs-f68a8869d1b5d25855bdc5cb1654bb4c1b2a5cb2.tar.gz
emacs-f68a8869d1b5d25855bdc5cb1654bb4c1b2a5cb2.tar.bz2
emacs-f68a8869d1b5d25855bdc5cb1654bb4c1b2a5cb2.zip
Fix doc-view problem with file names with spaces in them
* lisp/doc-view.el (doc-view-get-bounding-box): Don't bug out on file names with spaces in them (bug#33344).
Diffstat (limited to 'lisp/doc-view.el')
-rw-r--r--lisp/doc-view.el45
1 files changed, 25 insertions, 20 deletions
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 77c06a8eaf9..60f6d6350c9 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -1320,26 +1320,31 @@ dragging it to its bottom-right corner. See also
(defun doc-view-get-bounding-box ()
"Get the BoundingBox information of the current page."
- (let* ((page (doc-view-current-page))
- (doc (let ((cache-doc (doc-view-current-cache-doc-pdf)))
- (if (file-exists-p cache-doc)
- cache-doc
- doc-view--buffer-file-name)))
- (o (shell-command-to-string
- (concat doc-view-ghostscript-program
- " -dSAFER -dBATCH -dNOPAUSE -q -sDEVICE=bbox "
- (format "-dFirstPage=%s -dLastPage=%s %s"
- page page doc)))))
- (save-match-data
- (when (string-match (concat "%%BoundingBox: "
- "\\([[:digit:]]+\\) \\([[:digit:]]+\\) "
- "\\([[:digit:]]+\\) \\([[:digit:]]+\\)")
- o)
- (mapcar #'string-to-number
- (list (match-string 1 o)
- (match-string 2 o)
- (match-string 3 o)
- (match-string 4 o)))))))
+ (let ((page (doc-view-current-page))
+ (doc (let ((cache-doc (doc-view-current-cache-doc-pdf)))
+ (if (file-exists-p cache-doc)
+ cache-doc
+ doc-view--buffer-file-name))))
+ (with-temp-buffer
+ (when (eq 0 (ignore-errors
+ (process-file doc-view-ghostscript-program nil t
+ nil "-dSAFER" "-dBATCH" "-dNOPAUSE" "-q"
+ "-sDEVICE=bbox"
+ (format "-dFirstPage=%s" page)
+ (format "-dLastPage=%s" page)
+ doc)))
+ (goto-char (point-min))
+ (save-match-data
+ (when (re-search-forward
+ (concat "%%BoundingBox: "
+ "\\([[:digit:]]+\\) \\([[:digit:]]+\\) "
+ "\\([[:digit:]]+\\) \\([[:digit:]]+\\)")
+ nil t)
+ (mapcar #'string-to-number
+ (list (match-string 1)
+ (match-string 2)
+ (match-string 3)
+ (match-string 4)))))))))
(defvar doc-view-paper-sizes
'((a4 595 842)