Skip to main content

NeoView PDF viewer with rectangular crop/measure tool

Project description

NeoView

NeoView is a production-quality PDF viewer with a rectangular crop/measure tool for Linux and Windows.

NeoView is designed as a practical alternative to SumatraPDF for Linux users, while adding features useful for technical and LaTeX workflows. Key advantages:

  • Auto-reload: automatically refreshes PDFs when LaTeX rebuilds, so you don't have to close/reopen the viewer.
  • Measurement tools: precise rectangle measurement with units in pt/mm for layout and proofreading.
  • Export selections: save regions as PNG at multiple DPI values.

Features

  • PDF Viewing: Open and navigate multi-page PDFs
  • Zoom: Pinch gestures, Ctrl+wheel, Fit Width, Actual Size
  • Selection Tool: Click+drag to create measurement rectangle
  • Precise Adjustment: Drag edges/corners to resize, keyboard nudges
  • Measurements: Live display in points, picas, and millimeters
  • Export: Save selection as PNG at 150/300/600 DPI
  • Auto-reload: Watch file for external changes
  • Container-ready: Works with Wayland or X11 forwarding

Requirements

  • Python 3.10+
  • PySide6
  • PyMuPDF

Installation

pip install neoview

Downloads

Prebuilt Windows executable releases are available from the GitHub Releases page for this project. Each tagged release will include a neoview.exe download.

Install from source (launchable)

pip install .

This installs a neoview launcher. Run it to open the app, then use File → Open to choose a PDF.

Optional desktop launcher (Linux):

./install_desktop.sh

Windows notes

If you run on Windows, install with:

py -m pip install neoview

Launch:

neoview

Windows .exe build (optional)

If you want a standalone executable on Windows:

py -m pip install .[dev]
pyinstaller neoview.spec

The executable will be at dist\\neoview.exe.

Usage

Direct Run

# Open with file dialog
python pdf_crop_measure.py

# Open specific PDF
python pdf_crop_measure.py /path/to/document.pdf

Installed App

# Open the app
neoview

# Open specific PDF
neoview /path/to/document.pdf

Module Run

python -m neoview

Container Run

Build:

docker build -t pdf-measure .

Wayland (GNOME Wayland - preferred):

docker run -it --rm \
  -e XDG_RUNTIME_DIR=/run/user/$(id -u) \
  -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
  -e QT_QPA_PLATFORM=wayland \
  -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/run/user/$(id -u)/$WAYLAND_DISPLAY \
  -v /path/to/pdfs:/pdfs \
  pdf-measure /pdfs/document.pdf

X11 (fallback, most compatible):

xhost +local:docker
docker run -it --rm \
  -e DISPLAY=$DISPLAY \
  -e QT_QPA_PLATFORM=xcb \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v /path/to/pdfs:/pdfs \
  pdf-measure /pdfs/document.pdf

Keyboard Shortcuts

Shortcut Action
Ctrl+O Open PDF file
Ctrl+Q Exit application
Ctrl+C Copy measurements to clipboard
Ctrl+S Export selection as PNG
PgUp / PgDn Previous / Next page
Ctrl+Wheel Zoom in/out
W Fit to width
1 Actual size (100%)
Arrow Move selection by 1 pt
Shift+Arrow Move selection by 10 pt
Ctrl+Arrow Resize selection by 1 pt
Ctrl+Shift+Arrow Resize selection by 10 pt
Escape Clear selection

Selection Tool

  1. Create: Click and drag on the PDF page
  2. Move: Drag inside the selection
  3. Resize: Drag edges or corners
  4. Fine-tune: Use arrow keys with modifiers
  5. Measure: See live measurements in status bar

All measurements are in PDF coordinate space (points) and remain accurate at any zoom level.

Export

  1. Create a selection
  2. Press Ctrl+S or click Export button
  3. Choose DPI (150/300/600)
  4. Save as PNG

Auto-reload

Enable "Auto-reload on file change" in Options menu to automatically refresh when the PDF is modified externally. Selection and page position are preserved.

License

MIT

Development

python3 -m pip install -e .[dev]
pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neoview-0.1.2.tar.gz (32.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neoview-0.1.2-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file neoview-0.1.2.tar.gz.

File metadata

  • Download URL: neoview-0.1.2.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for neoview-0.1.2.tar.gz
Algorithm Hash digest
SHA256 0e55e48e81271d0cab12b71df3f353b6d74ea6a13910213a4009b406b561d13b
MD5 1833374382a649d5aaecfced5a4e27c1
BLAKE2b-256 7d57a66e9c675190e6a26556db463bf364d845acbea19ac5c0b27513c811b906

See more details on using hashes here.

File details

Details for the file neoview-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: neoview-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 29.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for neoview-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 878ac836732d2ee42e11d768041b925842fb9a3255020d176ba53f5eacd4820e
MD5 283e5349355e432760583cb11d7f0d49
BLAKE2b-256 410992f077b6eff0337a66e720b24c7443fbb520301b5aeb004fa6e9c50b18f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page