:tools pdf

Emacs, your next PDF reader

1. Description

This module improves support for reading and interacting with PDF files in Emacs.

It uses pdf-tools, which is a replacement for the built-in doc-view-mode for PDF files. The key difference being pages are not pre-rendered, but instead rendered on-demand and stored in memory; a much faster approach, especially for larger PDFs.

See pdf-tools’ project website for details and videos.

1.1. Maintainers

This module has no dedicated maintainers. Become a maintainer?

1.2. Module flags

This module has no flags.

1.4. Hacks

  • Added out-of-the-box support for HiDPI or Retina displays.

2. Prerequisites

This module requires epdfinfo, a program the the pdf-tools plugin will build automatically when you open your first pdf file, unless you’re on Windows. Windows users must build it themselves.

2.1. Building epdfinfo on Windows

  1. Install MSYS2 and update the package database and core packages using the instructions provided.
  2. Update and install dependencies, skipping any you already have:

    $ pacman -Syu
    $ pacman -S base-devel
    $ pacman -S mingw-w64-x86_64-toolchain
    $ pacman -S mingw-w64-x86_64-zlib
    $ pacman -S mingw-w64-x86_64-libpng
    $ pacman -S mingw-w64-x86_64-poppler
    $ pacman -S mingw-w64-x86_64-imagemagick
    
  3. Install PDF tools in Emacs, but do not try to compile the server. Instead, get a separate copy of the source somewhere else:

    $ git clone https://github.com/politza/pdf-tools
    
  4. Open mingw64 shell (Note: You must use mingw64.exe and not msys2.exe).
  5. Compile pdf-tools:

    # Cask requires python2 (important: not 3!)
    $ pacman -S python2
    
    # Make the mingw-shell aware of your python installation. Adjust the path if
    # Emacs is installed elsewhere!
    $ export PATH="/c/Program Files (x86)/Emacs/bin/:$PATH"
    
    # Cask needs to know where git.exe is; change this path if git is installed
    # elsewhere!
    $ export PATH="/c/Program Files/Git/bin:$PATH"
    
    # Install cask. Certificate errors can be ignored with (unsafe) -k option.
    $ curl -fsSL https://raw.githubusercontent.com/cask/cask/master/go | python
    
    # Make sure the build process can see cask
    $ export PATH="$HOME/.cask/bin:$PATH"
    
    $ cd /path/to/pdf-tools
    $ make -s
    
  6. This should produce a file server/epdfinfo.exe. Copy this file into the ~/.emacs.d/.local/straight/build/pdf-tools/.
  7. Start Emacs.
  8. Open a pdf file (or run M-x pdf-tools-install)
  9. Test it out: M-x pdf-info-check-epdfinfo

3. TODO Usage

This module has no usage documentation yet. Write some?

4. TODO Configuration

This module has no configuration documentation yet. Write some?

5. TODO Troubleshooting

There are no known problems with this module. Report one?

6. TODO Appendix

This module has no appendix yet. Write one?