Skip to content

Port O365-aligned XLSX rendering parity findings from MiniPdf Rust #2

Description

@shps951023

Context

A benchmark-driven XLSX-to-PDF parity session was completed in mini-software/MiniPdf using Microsoft 365 Excel as the authoritative visual reference and LibreOffice as an auxiliary implementation reference.

This issue records the reusable parsing and layout findings for MiniExcel-Rust. No MiniExcel-Rust code change is claimed yet.

Objective

Evaluate and port the applicable OOXML behaviors:

  • explicit print scale combined with print-title rows
  • page count and vertical pagination
  • containsText conditional formatting
  • custom Excel date and thousands number formats
  • leftward overflow for right-aligned text
  • odd-footer fields, page number, and total page count
  • font-family/style selection based on the workbook

Reference outcome

For the PO_anonymized.xlsx benchmark, the MiniPdf Rust implementation improved from:

Metric Initial Final
Pages 8/9 9/9
Text similarity 0.9751 1.0000
Visual similarity 0.8200 0.9002
Overall score 0.8180 0.9601

The remaining differences are primarily rasterization, anti-aliasing, border thickness, and minor drawing geometry.

Acceptance criteria

  • Identify which findings apply to MiniExcel-Rust's current XLSX model/parser
  • Add focused fixtures for print titles, explicit scale, conditional formatting, number formats, overflow, and footer fields
  • Compare output primarily against Microsoft 365 Excel
  • Use LibreOffice behavior/source only as supporting evidence
  • Preserve page counts and avoid visual regressions greater than 0.002
  • Document font-family and font-style selection separately from PDF subset aliases

A detailed session logic flow and implementation notes will be posted as a follow-up comment.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions