{"adoption": {"forks": 1231, "observed_at": "2026-08-28T04:06:42.282683+00:00", "stars": 2380}, "canonical_url": "https://ross.abutalabs.com/products/docx4j", "card": {"archived": false, "artifact_type": "library", "description": "JAXB-based Java library for Word docx, Powerpoint pptx, and Excel xlsx files", "domain": ["files", "pdf", "developer-tools", "spreadsheets"], "enriched": true, "function": ["parser", "templating", "pdf"], "health_score": 80, "homepage": "https://www.docx4java.org/", "language": "Java", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["plutext/docx4j"], "name": "plutext/docx4j", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-08-26T10:10:22+00:00", "repo": "plutext/docx4j", "stars": 2380, "tags": ["docx", "pptx", "xlsx", "openxml", "ooxml", "jaxb", "word", "powerpoint", "excel", "document-generation", "mail-merge", "java", "html-export", "office-documents"], "topics": [], "urls": [], "use_cases": ["generate word documents from templates in java", "read and edit docx files programmatically", "convert docx to pdf in java", "mail merge into docx templates with MERGEFIELD or content controls", "create or modify powerpoint pptx presentations from java", "manipulate excel xlsx workbooks from java", "export word documents to html"], "what_it_is": "docx4j is an open-source (Apache v2) Java library for creating, editing, and saving Microsoft OpenXML packages, including Word docx, PowerPoint pptx, and Excel xlsx files, using JAXB for the in-memory object representation. It offers power at the file-format level: document generation via data binding or MERGEFIELD, CustomXML binding, transforms, and export to HTML or PDF.", "when_to_avoid": ["You are not on the JVM - this is a Java library, similar to Microsoft's OpenXML SDK but for Java", "You want a simple high-level API and are unwilling to learn JAXB and the Open XML file structure", "You are stuck on legacy Java 8 - docx4j-8 is unsupported", "You need only trivial text extraction where a lighter-weight parser would suffice"], "when_to_choose": ["You need format-level control over OpenXML documents from Java - anything the file format supports can be done", "You need document generation via variable binding, content controls, or MERGEFIELD with repeats and conditionals", "You need docx-to-PDF or docx-to-HTML export without driving a full Office installation", "You are on Java 11+ and want an actively maintained OpenXML library with JPMS modularised releases"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/docx4j", "repo": "plutext/docx4j", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "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:06:42.282683+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.282683+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:34:52.349668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47fe6ecc3830987cd608519a62e12bb23e49ff9b196744e9bf94da10db83ecf1", "fetched_at": "2026-08-28T04:06:42.282683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/plutext/docx4j"}, {"content_hash": "5e6347ff6fc9c6084dc995db273e301925685fa99d507c5ace08d0f002c1032e", "fetched_at": "2026-08-29T10:15:45.304888+00:00", "kind": "homepage", "missing": false, "url": "https://www.docx4java.org/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5227, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}