Puis-je configurer eww pour utiliser le mode d'affichage pdf (à partir des outils pdf) pour les PDF au lieu de DocView?

12

J'utilise des outils pdf pour lire les fichiers PDF à l'intérieur d'Emacs et je le préfère grandement à DocView. Je viens de remarquer que lorsque j'essaie d'ouvrir une URL qui pointe vers un PDF dans eww, il utilise DocView au lieu du mode de visualisation pdf de pdf-tools. C'est particulièrement ennuyeux car DocView ne parvient pas à afficher le PDF! Passer le tampon en mode d'affichage pdf manuellement puis l'affiche avec succès. Puis-je configurer les choses pour qu'eww utilise le mode d'affichage pdf du premier coup?

Omar
la source
Jetez un œil à la ligne 403 du code source dans le lien ci-joint: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… Il peut être sur une ligne différente selon la version vous utilisez.
lawlist
Merci, @lawlist, après avoir posé la question, j'ai trouvé que c'était là où doc-view-modeétait appelé en définissant (debug-on-entry 'doc-view-mode).
Omar
3
Est-ce que cela répond à votre question? Comment utiliser les outils pdf (pdf-view-mode) dans emacs?
Tyler
@Tyler, je ne suis pas sûr, mais je ne vais pas enquêter si oui ou non parce que (1) cette question a déjà été répondue en 2014, comme vous le vérifiez en faisant défiler jusqu'à la réponse que j'ai acceptée, (2) même si la réponse est inutile de nos jours, car avec les versions plus récentes d'Emacs et des outils pdf, ce que je voulais fonctionne bien! (j'ai donc supprimé le code aimablement suggéré par T. Verron de mon init.el il y a quelques années).
Omar
1
@Omar, je pense que la phrase "Est-ce que cela répond à votre question?" est-il ajouté automatiquement lorsque vous marquez une question en double maintenant? De toute façon, je n'y suis pas entré à la main. J'ai signalé cela comme un doublon, car la question liée sert de réponse canonique aux questions du formulaire "Comment puis-je faire fonctionner les outils PDF pour X". Bien sûr, votre question a été posée et répondue avant l'autre question, mais je pense qu'il est normal de le faire lorsqu'une réponse générale complète répond à une question plus ancienne et plus spécifique.
Tyler

Réponses:

7

Avertissement: sale solution de contournement à venir

Puisque vous " préférez grandement [les outils pdf] à DocView ", est-il sûr de supposer que son utilisation pour afficher tous les fichiers PDF est acceptable?

L'extrait de code suivant fera basculer le document à pdf-view-modetout moment doc-viewavec un pdfdocument.

(defvar tv/prefer-pdf-tools (fboundp 'pdf-view-mode))
(defun tv/start-pdf-tools-if-pdf ()
  (when (and tv/prefer-pdf-tools
             (eq doc-view-doc-type 'pdf))
    (pdf-view-mode)))

(add-hook 'doc-view-mode-hook 'tv/start-pdf-tools-if-pdf)

Le comportement peut être activé ou désactivé en setqdéfinissant la variable tv/prefer-pdf-toolssur t ou nil.

T. Verron
la source
Oh, j'avais raté ça doc-view-modeavait un crochet! J'ai essayé adivising eww-display-pdfet cela n'a pas fonctionné ( je ne sais pas pourquoi). Je vais essayer votre solution et faire un rapport.
Omar
Super merci! Cela fonctionne (après avoir supprimé les parenthèses tv/prefer-pdf-tools, ce qui n'est pas une fonction).
Omar
3

Vous pouvez utiliser un conseil eww-display-pdfpour remplacer doc-view-modetemporairement la définition de . Avec la nouvelle nadvicebibliothèque, c'est aussi simple que:

(advice-add 'eww-display-pdf
            :around (lambda (orig &rest args)
                      (cl-letf (((symbol-function 'doc-view-mode) #'pdf-view-mode))
                        (apply orig args)))
            '((name . eww-display-pdf-tools)))

Pour revenir à l'original doc-view-mode, utilisez (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

J'ai ouvert le bogue Emacs 19270 pour rendre le mode PDF EWW personnalisable.

lunaryorn
la source
Cool! J'ai essayé d'ajouter des conseils pour le eww-display-pdffaire fonctionner, pdf-view-mode :afteril a fait son travail habituel, mais cela n'a pas fonctionné pour une raison quelconque. Il ne m'est jamais venu à l'esprit d'échanger la définition de la doc-view-modefonction (probablement parce que je suis tellement habitué à la portée lexicale!).
Omar
Merci d'avoir également ouvert le rapport de bogue. J'imagine que beaucoup de gens préféreraient en fait eww pour ouvrir des PDF dans leur visionneuse PDF externe habituelle.
Omar
0

J'utilise emacs-28, eww use mailcap pour ouvrir le pdf, personnalisez-le en l'ouvrant avec les outils pdf:

(add-to-list 'mailcap-user-mime-data
               '((type . "application/pdf")
                 (viewer . pdf-view-mode)))

Voir Emacs - Aide - visionneuse pdf pour plus d'informations.

xinfa tang
la source
Êtes-vous du futur? Je ne pense pas qu'Emacs 27 soit encore sorti (c'est la version pré-version que j'utilise), encore moins 28.
Omar
J'utilise archlinux avec la version de développement d'emacs: aur / emacs-git 28.0.50.139945-1 [installé: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Branche maître de développement.
xinfa tang