{"adoption": {"forks": 278, "observed_at": "2026-08-28T04:05:53.205502+00:00", "stars": 1911}, "canonical_url": "https://ross.abutalabs.com/products/pdfrw", "card": {"archived": false, "artifact_type": "library", "description": "pdfrw is a pure Python library that reads and writes PDFs", "domain": ["pdf", "files", "developer-tools"], "enriched": true, "function": ["parser", "pdf", "serialization"], "health_score": 20, "homepage": null, "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["pmaupin/pdfrw"], "name": "pmaupin/pdfrw", "platform": ["python", "cross-platform"], "pushed_at": "2024-04-29T09:01:02+00:00", "repo": "pmaupin/pdfrw", "stars": 1911, "tags": ["pdf-manipulation", "vector-graphics", "reportlab-integration", "pure-python"], "topics": [], "urls": [], "use_cases": ["merge multiple pdf files into one", "add a watermark to every page of a pdf", "extract a subset of pages from a pdf", "rotate pages in a pdf document", "modify pdf metadata without changing structure", "reuse existing pdf pages in reportlab-generated documents", "create printable booklets from pdf pages"], "what_it_is": "pdfrw is a pure Python library that reads and writes PDF files, supporting operations like merging, rotating, subsetting, watermarking, and metadata modification. It faithfully reproduces vector graphics without rasterization and can be used standalone or alongside reportlab and rst2pdf.", "when_to_avoid": ["you need to extract or manipulate text content, not just structure", "you need to handle encrypted PDFs without pre-processing with pdftk", "you need active development and modern Python version support", "you need form filling or advanced PDF features"], "when_to_choose": ["you need a pure Python PDF parser with no compiled dependencies", "you must preserve vector graphics fidelity when manipulating PDFs", "you want to combine existing PDFs with reportlab output", "you need fast PDF parsing for pre-press or print workflows"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pdfrw", "repo": "pmaupin/pdfrw", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "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:05:53.205502+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.205502+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:11:02.474676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a99761b20e65874c5a2c3ad68b07688d9db5877ce24b2cb9a85c878a84a4352", "fetched_at": "2026-08-28T04:05:53.205502+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pmaupin/pdfrw"}, {"content_hash": "1b489936c500c366e9567da9967195d5a0bb7e7668d56e5cdc3fd6e6e9967c9d", "fetched_at": "2026-08-29T10:49:56.113393+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pdfrw/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4113, "days_push": 856, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}