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 pdf2xlsxmacOS
brew tap SecurityRonin/tap && brew install pdf2xlsxDebian / Ubuntu / Kali
curl -1sLf 'https://dl.cloudsmith.io/public/securityronin/pdf2xlsx/setup.deb.sh' | sudo bash
sudo apt install pdf2xlsxWindows
Download the .msi from the latest release.
pip
pip install pdf2xlsxpdf2xlsx-guiOpens 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.
# 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 pymupdfpdf2xlsx 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
Each detected table becomes a separate sheet in the workbook, named p{page}-t{index}. The GUI shows all sheets as tabs.
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
