Validate files against %PDF- magic before parsing, returning a machine-readable NotAPdf error with a hint about the actual file type (HTML, XML, JSON, PNG, JPEG, ZIP, plain text). Improves From<lopdf::Error> with structured matching for IO, encryption, and structural errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>