{"adoption": {"forks": 229, "observed_at": "2026-08-28T04:07:22.492423+00:00", "stars": 2798}, "canonical_url": "https://ross.abutalabs.com/products/pikepdf", "card": {"archived": false, "artifact_type": "library", "description": "A Python library for reading and writing PDF, powered by QPDF", "domain": ["pdf", "files", "developer-tools"], "enriched": true, "function": ["pdf", "parser", "image-processing", "cryptography", "serialization"], "health_score": 98, "homepage": "https://pikepdf.readthedocs.io/", "language": "Python", "license": "MPL-2.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["pikepdf/pikepdf"], "name": "pikepdf/pikepdf", "platform": ["python", "windows", "cross-platform"], "pushed_at": "2026-08-18T07:46:48+00:00", "repo": "pikepdf/pikepdf", "stars": 2798, "tags": ["pdf-manipulation", "qpdf", "pdf-repair", "pdf-encryption", "pdf-metadata", "page-manipulation", "image-extraction", "automation", "linux", "macos"], "topics": ["pdf", "pdf-generation", "pdf-manipulation", "existing-pdfs", "pypdf2", "python", "pikepdf", "qpdf"], "urls": [], "use_cases": ["merge multiple pdf files into one", "split a pdf into separate pages", "repair a corrupted pdf file", "remove pages from a pdf", "rotate pages in a pdf", "extract images from a pdf without re-encoding", "add password encryption to a pdf", "edit pdf metadata like title and author"], "what_it_is": "pikepdf is a Python library for reading, writing, repairing, and transforming PDF files, built on the mature qpdf C++ library. It supports page manipulation, metadata editing, lossless image extraction, and encryption/decryption with AES or RC4.", "when_to_avoid": ["you only need to render PDFs to images or text", "you want to create PDFs from scratch with rich layout control", "you need a pure-Python solution without native dependencies", "you need to fill or flatten PDF forms extensively"], "when_to_choose": ["you need low-level, reliable PDF manipulation in Python", "you must repair damaged or malformed PDFs", "you need lossless image extraction from PDFs", "you want to encrypt or decrypt PDFs with modern ciphers", "you are replacing PyPDF2 with a more robust library"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pikepdf", "repo": "pikepdf/pikepdf", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:22.492423+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:14:38.723340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "48d6652133d7cc302441e85b598940854ca1686690d164e0e508cadcb4eeec54", "fetched_at": "2026-08-28T04:07:22.492423+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pikepdf/pikepdf"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 89}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3275, "days_push": 15, "days_rel": 75, "gap_med": 18.5, "n_releases_24m": 27}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}