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.