{"id":13611591,"url":"https://github.com/emacs-eaf/eaf-pdf-viewer","last_synced_at":"2025-04-13T04:35:04.066Z","repository":{"id":39601749,"uuid":"394840068","full_name":"emacs-eaf/eaf-pdf-viewer","owner":"emacs-eaf","description":"Fastest PDF Viewer in Emacs","archived":false,"fork":false,"pushed_at":"2025-04-09T16:03:29.000Z","size":37637,"stargazers_count":82,"open_issues_count":1,"forks_count":27,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-09T17:23:26.768Z","etag":null,"topics":["eaf","emacs","pdf","pdf-viewer"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emacs-eaf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-11T02:41:24.000Z","updated_at":"2025-04-09T16:03:34.000Z","dependencies_parsed_at":"2024-04-17T01:33:23.075Z","dependency_job_id":"64dbcd28-37a6-420d-b0d9-16ed9abe61ef","html_url":"https://github.com/emacs-eaf/eaf-pdf-viewer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eaf%2Feaf-pdf-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eaf%2Feaf-pdf-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eaf%2Feaf-pdf-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eaf%2Feaf-pdf-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emacs-eaf","download_url":"https://codeload.github.com/emacs-eaf/eaf-pdf-viewer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665157,"owners_count":21142118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eaf","emacs","pdf","pdf-viewer"],"created_at":"2024-08-01T19:01:58.381Z","updated_at":"2025-04-13T04:35:04.058Z","avatar_url":"https://github.com/emacs-eaf.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"### EAF PDF Viewer\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"800\" src=\"./screenshot.png\"\u003e\n\u003c/p\u003e\n\nPDF Viewer application for the [Emacs Application Framework](https://github.com/emacs-eaf/emacs-application-framework).\n\n### Load application\n[Install EAF](https://github.com/emacs-eaf/emacs-application-framework#install) first, then add below code in your emacs config:\n\n```Elisp\n(add-to-list 'load-path \"~/.emacs.d/site-lisp/emacs-application-framework/\")\n(require 'eaf)\n(require 'eaf-pdf-viewer)\n```\n\n### LaTeX config\n\n```Elisp\n(add-to-list 'TeX-command-list '(\"XeLaTeX\" \"%`xelatex --synctex=1%(mode)%' %t\" TeX-run-TeX nil t))\n(add-to-list 'TeX-view-program-list '(\"eaf\" eaf-pdf-synctex-forward-view))\n(add-to-list 'TeX-view-program-selection '(output-pdf \"eaf\"))\n\n```\n\nDouble click the left button to edit backward.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"800\" src=\"./latex_screenshot.gif\"\u003e\n\u003c/p\u003e\n\n### Translate current word\nDouble click the right button to edit backward.\n\nYou need re-implement `eaf-translate-text` yourself.\n\n\u003cimg width=\"1214\" alt=\"SCR-20230805-ofva\" src=\"https://github.com/emacs-eaf/eaf-pdf-viewer/assets/1028971/67a39c19-5a70-4804-9160-aedf1a56f3ee\"\u003e\n\nThe translation tool used in the screenshot is: [popweb](https://github.com/manateelazycat/popweb)\n\n### Dark mode\nDefault set background color to `emacs-background-color`\n\nOverride this behavior\n```\n(setq eaf-pdf-dark-mode nil)\n```\n\n\n### Dependency List\n\n| Package        | Description              |\n| :--------      | :------                  |\n| python-pymupdf | PDF rendering engine     |\n| libreoffice    | Convert doc file to pdf, optional |\n\n### The keybinding of EAF PDF Viewer.\n\n| Key   | Event   |\n| :---- | :------ |\n| `j` | scroll_up |\n| `\u003cdown\u003e` | scroll_up |\n| `C-n` | scroll_up |\n| `k` | scroll_down |\n| `\u003cup\u003e` | scroll_down |\n| `C-p` | scroll_down |\n| `h` | scroll_left |\n| `\u003cleft\u003e` | scroll_left |\n| `C-b` | scroll_left |\n| `l` | scroll_right |\n| `\u003cright\u003e` | scroll_right |\n| `C-f` | scroll_right |\n| `SPC` | scroll_up_page |\n| `b` | scroll_down_page |\n| `C-v` | scroll_up_page |\n| `M-v` | scroll_down_page |\n| `t` | toggle_read_mode |\n| `0` | zoom_reset |\n| `=` | zoom_in |\n| `-` | zoom_out |\n| `g` | scroll_to_begin |\n| `G` | scroll_to_end |\n| `p` | jump_to_page |\n| `P` | jump_to_percent |\n| `[` | save_current_pos |\n| `]` | jump_to_saved_pos |\n| `i` | toggle_inverted_mode |\n| `C-i` | toggle_inverted_image_mode |\n| `m` | toggle_mark_link |\n| `f` | jump_to_link |\n| `M-w` | copy_select |\n| `C-s` | search_text_forward |\n| `C-r` | search_text_backward |\n| `x` | close_buffer |\n| `z` | eaf-ocr-buffer |\n| `C-\u003cright\u003e` | rotate_clockwise |\n| `C-\u003cleft\u003e` | rotate_counterclockwise |\n| `M-h` | add_annot_highlight |\n| `M-u` | add_annot_underline |\n| `M-s` | add_annot_squiggly |\n| `M-d` | add_annot_strikeout_or_delete_annot |\n| `M-e` | add_annot_text_or_edit_annot |\n| `M-p` | toggle_presentation_mode |\n| `J` | select_left_tab |\n| `K` | select_right_tab |\n| `o` | eaf-pdf-outline |\n| `O` | eaf-pdf-outline-edit |\n| `T` | toggle_trim_white_margin |\n| `C-t` | toggle_last_position |\n\n### Other Features and Customization\n\n- `(eaf-pdf-narrow-search)`: full-document line-based search and live-preview with ivy (for both PDF and EPUB)\n- `(eaf-pdf-narrow-search \"toc\")`: search toc with ivy (for both PDF and EPUB)\n\n  You can customize the search functions like this:\n  ```Elisp\n    (defun eaf-pdf-narrow-search-toc () (interactive) (eaf-pdf-narrow-search \"toc\"))\n    (eaf-bind-key eaf-pdf-narrow-search-toc \"C-o\" eaf-pdf-viewer-keybinding)\n    (eaf-bind-key eaf-pdf-narrow-search \"/\" eaf-pdf-viewer-keybinding)\n  ```\n- left double click: open an emacs buffer filled with text of current page and jump to the corresponding line. (for EPUB and PDF when synctex failed)\n\n- set progress bar font size lively\n```Elisp\n  (setq eaf-pdf-show-progress-on-page 't) ;; default 24\n  (setq eaf-pdf-show-progress-on-page nil) ;; hide progress bar\n  (setq eaf-pdf-show-progress-on-page 20) ;; set font size to 20\n  (setq eaf-pdf-show-progress-on-page 0) ;; hide progress bar\n```\n\n- click after select to copy text\n```Elisp\n  (setq eaf-pdf-click-to-copy t) # ;; default nil\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-eaf%2Feaf-pdf-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femacs-eaf%2Feaf-pdf-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-eaf%2Feaf-pdf-viewer/lists"}