pdfly

Install command:
brew install pdfly

CLI tool to extract (meta)data from PDF and manipulate PDF files

https://pdfly.readthedocs.io/en/latest/

License: BSD-3-Clause

Development: Pull requests

Formula JSON API: /api/formula/pdfly.json

Formula code: pdfly.rb on GitHub

Bottle (binary package) installation support provided for:

macOS on
Apple Silicon
golden gate ✅
tahoe ✅
sequoia ✅
Linux ARM64 ✅
x86_64 ✅

Current versions:

stable ✅ 0.5.1

Revision: 26

Depends on:

certifi 2026.7.22 Mozilla CA bundle for Python
cryptography 50.0.2 Cryptographic recipes and primitives for Python
libsodium 1.0.22 NaCl networking and cryptography library
openssl@3 3.6.5 Cryptography and SSL/TLS Toolkit
pillow 12.3.0 Friendly PIL fork (Python Imaging Library)
pydantic 2.13.5 Data validation using Python type hints
python@3.14 3.14.8 Interpreted, interactive, object-oriented programming language

Depends on when building from source:

pkgconf 3.0.7 Package compiler and linker metadata toolkit
rust 1.99.0 Safe, concurrent, practical language

Uses from macOS: m4 (build), libxml2, libxslt

Binaries: pdfly

Known vulnerabilities in the current version:

GHSA-qv6h-rv94-w285 pypdf: Possible large memory usage when retrieving Roman page labels
GHSA-5jq2-8x83-x246 pypdf: Possible long runtimes/large memory usage when parsing indirect objects
GHSA-fp3h-c4fm-7vvf pypdf: Possible large memory usage for large /ToUnicode streams (Follow-up 2)
GHSA-g9cg-prrw-2r8q pypdf: Possible large memory usage when parsing font data
GHSA-jw7q-gvrg-4vj3 pypdf: Possible long runtimes for partially malformed FlateDecode streams (Follow-up)
GHSA-php9-fj8v-98fj pypdf: Possible long runtimes when generating appearance streams
GHSA-v247-6f48-mgcj pypdf: Possible long runtimes with large amount of embedded files
GHSA-w23x-9jrw-r45c pypdf: Possible large memory usage when retrieving alphabetical page labels
GHSA-8988-9cw3-xx77 urllib3: HTTPS proxy TLS configuration may be ignored or overridden
GHSA-gh4c-6fx4-qh6g urllib3: Chunked Deflate streaming can enter an infinite loop
GHSA-vxq7-64xx-v4gw urllib3: HTTPResponse.stream()/read_chunked() buffers an unbounded chunk-size line into memory

Data from Homebrew/advisory-database. Run brew vulns pdfly for a live check.

Analytics:

30 days90 days365 days
Installs1177315,671
Installs (--HEAD)0114
Installs on Request1177305,668
Installs on Request (--HEAD)0114
Build Errors0