DocView 대신 PDF에 pdf-view-mode (pdf-tools에서)를 사용하도록 eww를 구성 할 수 있습니까?


12

pdf-tools 를 사용 하여 Emacs 내부의 PDF를 읽고 DocView보다 훨씬 선호합니다. 방금 eww에서 PDF를 가리키는 URL을 열려고하면 pdf-tools의 pdf-view-mode 대신 DocView가 사용됩니다. DocView가 PDF를 표시하지 못하기 때문에 이것은 특히 성가시다! 버퍼를 pdf-view-mode로 수동 전환 한 후 성공적으로 표시합니다. eww가 첫 번째 시도에서 pdf-view-mode를 사용하도록 구성 할 수 있습니까?


첨부 된 링크에서 소스 코드의 403 행을보십시오. bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… 버전에 따라 다른 행에있을 수 있습니다. 당신은 사용하고 있습니다.
lawlist December

감사합니다, @lawlist, 내가 질문을 한 후 doc-view-mode설정을 통해 호출 된 곳 을 찾았습니다 (debug-on-entry 'doc-view-mode).
Omar

3
이것이 귀하의 질문에 대답합니까? emacs에서 pdf-tools (pdf-view-mode)를 사용하는 방법?
타일러

@Tyler, 확실하지 않지만 (1) 2014 년에 이미이 질문에 대한 답변이 있었기 때문에 (1) 내가 수락 한 답변으로 스크롤하여 확인함으로써 (2) 더 최신 버전의 Emacs 및 pdf-tools를 사용하여 원하는 결과가 나오기 때문에 요즘 대답은 필요하지 않습니다! (따라서 몇 년 전에 T. Verron이 init.el에서 친절하게 제안한 코드를 제거했습니다).
Omar

1
@Omar "이 질문에 답이 되었습니까?" 질문을 지금 중복으로 표시하면 자동으로 추가됩니까? 어쨌든 손으로 입력하지 않았습니다. 링크 된 질문은 "pdf 도구를 X에서 작동시키는 방법"과 같은 형식의 질문에 대한 정식 답변 역할을하기 때문에 이것을 중복으로 표시했습니다. 물론 다른 질문보다 먼저 질문에 대한 답변을 받았지만 포괄적 인 일반 답변이 더 오래되고 더 구체적인 질문에 답변 할 때이 방법을 사용하는 것이 일반적이라고 생각합니다.
타일러

답변:


7

경고 : 더러운 해결 방법

" [doc-tools]보다 [pdf-tools]를 매우 선호 "하므로 모든 PDF를 보는 데 사용할 수 있다고 가정해도 안전합니까?

다음 코드 스 니펫은 문서를 입력 할 pdf-view-mode때마다 문서를 전환합니다 .doc-viewpdf

(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)

setq변수 tv/prefer-pdf-tools를 t 또는 nil 로 -ing하여 동작을 활성화하거나 비활성화 할 수 있습니다 .


오, 나는 그 doc-view-mode후크를 놓친 것을 놓쳤다 ! 나는 분할을 시도했지만 eww-display-pdf작동하지 않았습니다 (왜 그런지 확실하지 않음). 나는 당신의 해결책을 시도하고 다시보고합니다.
Omar

정말 고마워요! 이것은 작동하지 않습니다 (주위 괄호를 제거한 후에 tv/prefer-pdf-tools는 기능이 아닙니다).
Omar

3

주변 eww-display-pdf에 대한 조언을 사용하여 doc-view-mode임시 정의를 무시할 수 있습니다 . 새 nadvice라이브러리를 사용하면 다음과 같이 쉽습니다.

(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)))

원본으로 되돌리려면을 doc-view-mode사용하십시오 (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

EWW PDF 모드를 사용자 정의 할 수 있도록 Emacs 버그 19270 을 열었습니다 .


멋있는! 나는 평소의 작업을 eww-display-pdf수행하도록 조언을 추가하려고했지만 pdf-view-mode :after어떤 이유로 든 작동하지 않았습니다. doc-view-mode함수 정의를 스왑하는 것은 결코 일어나지 않았습니다 (아마도 어휘 범위에 익숙하기 때문입니다!).
Omar

버그 보고서를 열어 주셔서 감사합니다. 실제로 많은 사람들이 eww가 자신의 일반적인 외부 PDF 뷰어에서 PDF를 여는 것을 선호한다고 생각합니다.
Omar

0

나는 emacs-28을 사용하고, eww는 mailcap을 사용하여 pdf를 열고, pdf-tools로 열어서 사용자 정의합니다.

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

자세한 내용은 Emacs-도움말-pdf 뷰어 를 참조하십시오.


미래에서 왔습니까? 나는 Emacs 27이 아직 출시되지 않았다고 생각한다. (내가 사용하는 시험판 빌드) 28.
Omar

emacs의 개발 버전으로 archlinux를 사용합니다 : aur / emacs-git 28.0.50.139945-1 [installed : 28.0.50.140001-1] (74) (1.07) GNU Emacs. 개발 마스터 지점.
신파 탕
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.