diff --git a/lisp/net/eww.el b/lisp/net/eww.el index d6f850ca3b..43405fbd9c 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -667,14 +811,19 @@ eww-display-image (declare-function mailcap-view-mime "mailcap" (type)) (defun eww-display-pdf () - (let ((data (buffer-substring (point) (point-max)))) - (pop-to-buffer-same-window (get-buffer-create "*eww pdf*")) - (let ((coding-system-for-write 'raw-text) - (inhibit-read-only t)) - (erase-buffer) - (insert data) - (mailcap-view-mime "application/pdf"))) - (goto-char (point-min))) + (let ((buf (current-buffer)) + (pos (point))) + (with-current-buffer (get-buffer-create "*eww pdf*") + (let ((inhibit-read-only t)) + (erase-buffer) + (set-buffer-multibyte nil) + (insert-buffer-substring buf pos) + (mailcap-view-mime "application/pdf")) + (if (zerop (buffer-size)) + ;; Buffer contents passed to shell command via temporary file. + (kill-buffer) + (goto-char (point-min)) + (pop-to-buffer-same-window (current-buffer)))))) (defun eww-setup-buffer () (when (or (plist-get eww-data :url)