Skip to content

Repository files navigation

pdf2xlsx

CI Release License: Apache-2.0 Sponsor

Extract tables from PDFs into Excel workbooks — with a split-panel GUI that lets you preview the source PDF on the left and the extracted spreadsheet on the right.

brew tap SecurityRonin/tap && brew install pdf2xlsx

Install

macOS

brew tap SecurityRonin/tap && brew install pdf2xlsx

Debian / Ubuntu / Kali

curl -1sLf 'https://dl.cloudsmith.io/public/securityronin/pdf2xlsx/setup.deb.sh' | sudo bash
sudo apt install pdf2xlsx

Windows

Download the .msi from the latest release.

pip

pip install pdf2xlsx

Usage

GUI

pdf2xlsx-gui

Opens a split-panel window:

  • Left — PDF preview with page thumbnails, a page-jump spinbox, and Prev / Next navigation. Drag a PDF file onto this panel to open it.
  • Right — Extracted tables appear tab by tab as conversion progresses. Tabs link back to their source page — clicking a tab jumps the PDF viewer to that page, and vice versa.

Click Open PDF (or drag a file in) to load and auto-convert. Click Save XLSX when done.

CLI

# Convert all tables in a PDF to a workbook
pdf2xlsx convert report.pdf report.xlsx

# Choose extraction engine explicitly
pdf2xlsx convert report.pdf report.xlsx --engine pdfplumber
pdf2xlsx convert report.pdf report.xlsx --engine pymupdf

How It Works

pdf2xlsx uses two extraction engines and picks the best result:

Engine Strength
pdfplumber Lattice tables with visible borders
pymupdf Stream tables and sparse layouts

Raw extraction output is cleaned up by a postprocessing pipeline that handles common PDF-to-table artefacts:

  • Currency prefix attachment — lone $ / £ / cells are merged with the numeric cell that follows
  • Header alignment — headers that land in the wrong column after currency extraction are shifted to match their data
  • Sparse column consolidation — rows for the same logical column that end up in different physical columns are merged
  • Paragraph filtering — prose that pdfplumber captures below a table is discarded
  • Empty row/column removal

Output

Each detected table becomes a separate sheet in the workbook, named p{page}-t{index}. The GUI shows all sheets as tabs.


Platform Builds

Binary releases are built via GitHub Actions on native runners — no cross-compilation:

Platform Runner
macOS arm64 macos-14
macOS x86_64 macos-15
Linux amd64 ubuntu-24.04
Linux arm64 ubuntu-24.04-arm
Windows x86_64 windows-latest

Privacy Policy · Terms of Service · © 2026 Security Ronin Ltd

About

Extract tables from PDF files and export to Excel (.xlsx)

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages