mirror of
https://github.com/guillaumemeyer/watermarks-remover.git
synced 2026-08-22 13:11:57 +02:00
* fix: decode XML entities before Layer A scrub in OOXML/ODF Watermark carriers encoded as XML character references (e.g. ​) reached Layer A as nine ASCII characters and survived cleaning untouched, because the XML parser in Word/Writer decodes the entity back into the invisible carrier after the cleaner ran (#129). A shared _decode_xml_entities resolves exactly what a conforming XML parser resolves (numeric references and the five predefined entities) and leaves everything else literal. The DOCX/XLSX/PPTX text-run scrubbers decode before clean_text and re-encode on the way out; the ODT scrubber splits paragraph content into markup and text segments and only round-trips the text segments, because a whole-paragraph decode/re-encode would entity-escape the nested text:span/text:tab markup. Untouched runs keep their original bytes. * fix: satisfy ruff lint and format checks --------- Co-authored-by: yzxcj797 <yzxcj797@users.noreply.github.com> Co-authored-by: Guillaume Meyer (The Opinionated Man) <1385518+guillaumemeyer@users.noreply.github.com>