PDFx

← Back to Open-Source PDF Software
PythonDepreciatedStaleTested

CLI tool and Python package that extracts metadata (creation date, creator, page count, producer) and detects references (other PDFs, URLs, DOIs, arXiv IDs) within a PDF, with parallel downloading of referenced PDFs, plain-text extraction, and broken-hyperlink detection; outputs plain text or JSON, and accepts local files or URLs.

Sample Results

Real output from running this tool against a sample PDF, as part of PDFog's open-source PDF tooling benchmark.

Input: sample-brochure.pdf

Loading PDF…

(cd "sample-brochure.pdf_dir" && uv run --project "$repo_root" pdfx -t "sample-brochure.pdf_name" -o "sample-brochure--pdfx-python.txt")

Output: sample-brochure--pdfx-python.txt

221 Queen Street, Melbourne VIC 3000

apartment

2

1

1

$1,000,000

Prince Cascading

1234-5678

Additional Information

Land Size

House Size

Map Ref.

Energy Rating

Council Rates

Water Rates

1171m2

-

-

-

-

-

WARM BEAUTIFUL APARTMENT

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis ante, fermentum ac

cursus vitae, tempus vel ipsum. Proin justo lorem, mattis sed pharetra ac, vehicula

tincidunt sem. Mauris est leo, scelerisque at gravida vel, interdum quis felis. Nullam

nibh magna, consectetur eu aliquet ac, sollicitudin eget nisl. Praesent nibh tellus,

elementum ut scelerisque a, pretium eget libero. Morbi sodales tincidunt turpis et

sagittis. Aenean sed dictum nisi.

Phasellus quis metus lectus. Donec varius pellentesque purus, et ornare enim

pellentesque sed. Morbi quam augue, pulvinar sit amet mollis in, euismod porta orci.
Quisque rutrum egestas enim ac viverra. Mauris blandit tristique feugiat. Ut molestie

molestie turpis sed elementum. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Maecenas in nunc odio. Nunc sagittis, mi ut ornare pellentesque, orci augue dapibus

est, vel rutrum elit orci vel augue.


(cd "sample-brochure.pdf_dir" && uv run --project "$repo_root" pdfx -j "sample-brochure.pdf_name" -o "sample-brochure--pdfx-python.json")

Output: sample-brochure--pdfx-python.json

{
  "source": {
    "type": "file",
    "location": "sample-brochure.pdf",
    "filename": "sample-brochure.pdf"
  },
  "metadata": {
    "Producer": "Prince 8.1 (www.princexml.com)",
    "Title": "Real Estate Example Page",
    "Pages": 1
  },
  "references": {}
}