Skip to content

Releases: mini-software/MiniPdf

v0.35.1

Choose a tag to compare

@shps951023 shps951023 released this 02 Jul 16:36

What's New in v0.35.1

Highlights

  • XLSX wide-table layout fixes - improved handling for programmatically generated spreadsheets that emit column widths without customWidth, infer readable widths when column metadata is absent, repeat first-row print titles correctly, and add Excel-like cell text insets so adjacent text columns do not visually collide.
  • PPTX text fidelity improvements - enhanced whitespace/tab preservation and East Asian typeface handling for PowerPoint conversion.
  • Benchmark tooling updates - improved shared benchmark manifest/report plumbing, filtered issue comparisons, and richer PDF comparison behavior.
  • Rust converter progress - expanded DOCX/XLSX/PDF conversion support in minipdf-rs, including dependency lockfile updates.
  • Documentation refresh - synchronized README download links and translated README content.

Downloads

CLI and GUI binaries are built and attached automatically by the release workflows after this release is published.

Platform CLI Download GUI Download
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

Changes since v0.34.1

  • 2217a69 Refactor code structure for improved readability and maintainability
  • 7107672 feat(excel): enhance column width handling for better PDF rendering and add tests for inferred wide columns
  • aa77efa feat(pptx): enhance text handling to preserve whitespace and tabs, and support East Asian typefaces
  • 80a7ceb Enhance benchmark scripts and comparison logic
  • b09cad4 fix(docs): update links in translated README files for consistency

Diff Summary

 .github/skills/sync-readme-translations/SKILL.md   |   2 +-
 README.md                                          |   3 +-
 documents/README.fr.md                             |   3 +-
 documents/README.it.md                             |   3 +-
 documents/README.ja.md                             |   3 +-
 documents/README.ko.md                             |   3 +-
 documents/README.zh-CN.md                          |   5 +-
 documents/README.zh-TW.md                          |   3 +-
 minipdf-rs/Cargo.lock                              | 375 +++++++++++++++++++++
 minipdf-rs/crates/minipdf-cli/src/main.rs          |   8 +-
 minipdf-rs/crates/minipdf/src/docx.rs              |  64 +++-
 minipdf-rs/crates/minipdf/src/lib.rs               |  71 +++-
 minipdf-rs/crates/minipdf/src/office.rs            |   2 +-
 minipdf-rs/crates/minipdf/src/pdf.rs               |  20 +-
 minipdf-rs/crates/minipdf/src/xlsx.rs              |  97 +++++-
 scripts/Run-Benchmark.ps1                          |  33 +-
 scripts/Run-Benchmark_docx.ps1                     |  33 +-
 scripts/Run-Benchmark_pptx.ps1                     |  29 +-
 src/MiniPdf/ExcelReader.cs                         |  29 +-
 src/MiniPdf/ExcelToPdfConverter.cs                 |  79 +++--
 src/MiniPdf/PptxReader.cs                          |  59 +++-
 src/MiniPdf/PptxToPdfConverter.cs                  |  47 ++-
 tests/Issue_Files/reference_xlsx/XlsxIssue82_WideTable.pdf       | Bin 0 -> 506241 bytes
 tests/Issue_Files/reports_xlsx/comparison_report.json            | 104 ++++++
 tests/Issue_Files/reports_xlsx/comparison_report.md              | 149 +++++++-
 tests/Issue_Files/reports_xlsx/images/XlsxIssue82_WideTable_*.png | Bin new benchmark images
 tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx                | Bin 0 -> 17271 bytes
 tests/MiniPdf.Benchmark/benchmark_manifest.sample.json           |  25 ++
 tests/MiniPdf.Benchmark/compare_pdfs.py                          | 315 +++++++++++++++--
 tests/MiniPdf.Benchmark/run_benchmark.py                         |  63 +++-
 tests/MiniPdf.Benchmark/run_benchmark_docx.py                    |  63 +++-
 tests/MiniPdf.Benchmark/run_benchmark_pptx.py                    |  53 ++-
 tests/MiniPdf.Tests/ExcelToPdfConverterTests.cs                  | 106 +++++-
 tests/MiniPdf.Tests/PptxToPdfConverterTests.cs                   |  75 ++++-
 60 files changed, 1764 insertions(+), 160 deletions(-)

Full Changelog: v0.34.1...v0.35.1

v0.34.1

Choose a tag to compare

@shps951023 shps951023 released this 27 Jun 07:24

What's New in v0.34.1

Highlights

  • DOCX paragraph layout refinement -- improves paragraph handling with better line spacing and indentation logic.
  • Issue 78 benchmark update -- refreshes the DOCX comparison output and reference assets for the paragraph layout change.

Downloads

The release workflows build and attach both CLI and GUI packages automatically after this release is published.

Platform CLI GUI
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

Changes since v0.34.0

  • 6289c48 feat(docx): enhance paragraph handling with improved line spacing and indentation logic
 src/MiniPdf/DocxReader.cs                          |  13 ++++-
 src/MiniPdf/DocxToPdfConverter.cs                  |  65 ++++++++++++++++++---
 tests/Issue_Files/reference_docx/TestIssue78.pdf   | Bin 57420 -> 57420 bytes
 .../reports_docx/comparison_report.json            |  10 ++--
 .../Issue_Files/reports_docx/comparison_report.md  |  18 +++---
 .../reports_docx/images/TestIssue78_p1_minipdf.png | Bin 178267 -> 177685 bytes
 6 files changed, 82 insertions(+), 24 deletions(-)

Full Changelog: v0.34.0...v0.34.1

v0.34.0

Choose a tag to compare

@shps951023 shps951023 released this 27 Jun 06:46

What's New in v0.34.0

Highlights

  • PPTX to PDF conversion -- added a full PPTX conversion path with slide shape, image, table, SmartArt fallback, SVG blip, crop, and text rendering support.
  • Improved PowerPoint fidelity -- fixed theme color luminosity transforms with HSL luminance handling, improving Office-compatible color output.
  • Inherited placeholder text layout -- preserves layout/master placeholder alignment, spacing, line spacing, empty paragraphs, and hanging bullet indentation.
  • PPTX benchmark coverage -- added Asian Pacific PPTX issue files, reference PDFs, rendered comparison images, benchmark scripts, and conversion automation.
  • CLI, GUI, and web polish -- updated converter entry points, README content, localized docs, API/Web behavior, and GUI flow around the expanded conversion support.

Validation

  • Focused PPTX tests: dotnet test tests/MiniPdf.Tests --filter "PptxToPdfConverterTests" --no-restore -- 18/18 passed.
  • Full test suite: dotnet test tests/MiniPdf.Tests --no-restore -- 134/134 passed.
  • Library build: dotnet build src/MiniPdf/MiniPdf.csproj --no-restore -- 0 errors.
  • Asian Pacific PPTX benchmark: overall 0.9226, visual average 0.8567, text similarity 0.9499.

Downloads

Assets are built and attached automatically by GitHub Actions after the release is created.

GUI Download

Open the release page in a browser and download the minipdf-gui-* package for your platform:

https://github.com/mini-software/MiniPdf/releases/tag/v0.34.0

Platform GUI asset
Windows x64 minipdf-gui-win-x64.zip
Windows ARM64 minipdf-gui-win-arm64.zip
Linux x64 minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-gui-osx-arm64.tar.gz

CLI Download

Use GitHub CLI to download the command-line package for your platform:

gh release download v0.34.0 --repo mini-software/MiniPdf --pattern "minipdf-win-x64.zip"
gh release download v0.34.0 --repo mini-software/MiniPdf --pattern "minipdf-win-arm64.zip"
gh release download v0.34.0 --repo mini-software/MiniPdf --pattern "minipdf-linux-x64.tar.gz"
gh release download v0.34.0 --repo mini-software/MiniPdf --pattern "minipdf-linux-arm64.tar.gz"
gh release download v0.34.0 --repo mini-software/MiniPdf --pattern "minipdf-osx-x64.tar.gz"
gh release download v0.34.0 --repo mini-software/MiniPdf --pattern "minipdf-osx-arm64.tar.gz"

To download the GUI package from the CLI, use the corresponding minipdf-gui-* pattern, for example:

gh release download v0.34.0 --repo mini-software/MiniPdf --pattern "minipdf-gui-win-x64.zip"

Changes since v0.33.0

f134527 Enhance PptxToPdfConverter to support text alignment and spacing for inherited placeholders
45cb5c1 feat(pptx): add luminosity transform adjustments in color conversion and update tests
3e7c332 Refactor PptxToPdfConverter to enhance text rendering and cropping functionality
95e84f2 Add automated benchmark for PPTX to PDF conversion

Git Diff Summary

.gitignore                                         |    1 +
AGENTS.md                                          |    2 +
MiniPdf.Api/Program.cs                             |   13 +-
MiniPdf.Web/MiniPdf.Web.Client/I18n.cs             |   42 +-
MiniPdf.Web/MiniPdf.Web.Client/Pages/Converter.razor       |   10 +-
MiniPdf.Web/MiniPdf.Web.Client/wwwroot/app.css     |    2 +
MiniPdf.Web/README.md                              |    2 +-
README.md                                          |   11 +-
documents/README.*.md                              |   78 +-
scripts/Run-Benchmark_pptx.ps1                     |   67 +
src/MiniPdf.Cli/MiniPdf.Cli.csproj                 |    4 +-
src/MiniPdf.Cli/Program.cs                         |   10 +-
src/MiniPdf.Gui/ViewModels/MainWindowViewModel.cs  |    3 +-
src/MiniPdf.Gui/Views/MainWindow.axaml.cs          |    2 +-
src/MiniPdf/MiniPdf.cs                             |  127 +-
src/MiniPdf/MiniPdf.csproj                         |    4 +-
src/MiniPdf/PdfPage.cs                             |   20 +
src/MiniPdf/PdfWriter.cs                           |   31 +
src/MiniPdf/PptxReader.cs                          | 1610 ++++++++++++++++++++
src/MiniPdf/PptxToPdfConverter.cs                  |  836 ++++++++++
tests/Issue_Files/pptx/Asian Pacific.pptx          |  Bin 0 -> 547003 bytes
tests/Issue_Files/reference_pptx/Asian Pacific.pdf |  Bin 0 -> 355585 bytes
tests/Issue_Files/reports_pptx/*                   | comparison report and rendered image assets
tests/MiniPdf.Benchmark/generate_reference_pdfs_pptx.py | 136 ++
tests/MiniPdf.Benchmark/run_benchmark_pptx.py      |  152 ++
tests/MiniPdf.Scripts/convert_pptx_to_pdf.cs       |   64 +
tests/MiniPdf.Tests/PptxToPdfConverterTests.cs     |  883 +++++++++++
59 files changed, 4325 insertions(+), 96 deletions(-)

Full Changelog: v0.33.0...v0.34.0

v0.33.0

Choose a tag to compare

@shps951023 shps951023 released this 27 Jun 01:48

What's New in v0.33.0

Highlights

  • Selected Excel sheet export -- .NET API overloads and the CLI now support rendering selected .xlsx sheets by name or 1-based index, while the default behavior continues to render all visible sheets.
  • CLI sheet selection -- minipdf data.xlsx --sheets Summary,2 can mix sheet names and indexes in a single command.
  • Experimental Rust implementation -- Added minipdf-rs, an independent Rust workspace with a reusable minipdf crate and CLI prototype for basic .xlsx / .docx text extraction and PDF generation.
  • Excel conversion maintenance -- Refactored Excel reader, PDF writer, and conversion paths for readability and maintainability, with focused unit coverage for sheet selection behavior.
  • Benchmark coverage -- Added a new issue XLSX fixture, LibreOffice reference PDF, comparison report, and visual snapshots for validation.

Downloads

CLI and GUI Native AOT binaries are built and uploaded automatically by GitHub Actions after this release is published.

Platform CLI Download GUI Download
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

Changes since v0.32.0

  • 80d0717 Refactor code structure for improved readability and maintainability
  • 90b6acc feat(excel): add support for rendering selected Excel sheets by name or index in PDF conversion
  • 39037bf feat(rust): add experimental Rust implementation for MiniPdf with XLSX and DOCX support

Git Diff Summary

 .gitignore                                         |   1 +
 README.md                                          |  11 +
 documents/README.fr.md                             |   4 +
 documents/README.it.md                             |   4 +
 documents/README.ja.md                             |   4 +
 documents/README.ko.md                             |   4 +
 documents/README.nuget.md                          |   4 +
 documents/README.zh-CN.md                          |   4 +
 documents/README.zh-TW.md                          |   4 +
 minipdf-rs/Cargo.toml                              |  18 +
 minipdf-rs/README.md                               |  38 ++
 minipdf-rs/crates/minipdf-cli/Cargo.toml           |  15 +
 minipdf-rs/crates/minipdf-cli/src/main.rs          | 115 +++++
 minipdf-rs/crates/minipdf/Cargo.toml               |  12 +
 minipdf-rs/crates/minipdf/src/docx.rs              | 110 +++++
 minipdf-rs/crates/minipdf/src/lib.rs               | 136 +++++
 minipdf-rs/crates/minipdf/src/office.rs            |  27 +
 minipdf-rs/crates/minipdf/src/pdf.rs               | 281 +++++++++++
 minipdf-rs/crates/minipdf/src/xlsx.rs              | 255 ++++++++++
 src/MiniPdf.Cli/Program.cs                         |  25 +-
 src/MiniPdf/ExcelReader.cs                         | 545 +++++++++++++++------
 src/MiniPdf/ExcelToPdfConverter.cs                 | 133 +++--
 src/MiniPdf/MiniPdf.cs                             | 102 +++-
 src/MiniPdf/PdfPage.cs                             |   6 +-
 src/MiniPdf/PdfTextBlock.cs                        |   8 +-
 src/MiniPdf/PdfWriter.cs                           |  19 +
 tests/Issue_Files/reference_xlsx/Grocery list1.pdf | Bin 0 -> 86288 bytes
 .../reports_xlsx/comparison_report.json            |  26 +
 .../Issue_Files/reports_xlsx/comparison_report.md  | 132 ++++-
 .../images/Grocery list1_p1_minipdf.png            | Bin 0 -> 148076 bytes
 .../images/Grocery list1_p1_reference.png          | Bin 0 -> 137334 bytes
 tests/Issue_Files/xlsx/Grocery list1.xlsx          | Bin 0 -> 24937 bytes
 tests/MiniPdf.Benchmark/generate_reference_pdfs.py |   2 +-
 tests/MiniPdf.Scripts/convert_xlsx_to_pdf.cs       |   1 +
 tests/MiniPdf.Tests/ExcelToPdfConverterTests.cs    | 208 ++++++++
 35 files changed, 2052 insertions(+), 202 deletions(-)

Full Changelog: v0.32.0...v0.33.0

v0.32.0

Choose a tag to compare

@shps951023 shps951023 released this 23 Jun 01:46

What's New in v0.32.0

Highlights

  • DOCX table of contents rendering -- Empty TOC fields now generate heading entries in PDF output, with improved CJK title handling.
  • Page field placeholders -- PAGE and NUMPAGES placeholder handling was refactored, including better support for formatted page numbers and tab leader width calculation.
  • Benchmark coverage -- Added and refreshed DOCX/XLSX issue fixtures, reference PDFs, comparison reports, and visual snapshots for issue-driven validation.
  • Project maintenance -- Refactored code structure for readability and maintainability, and added GitHub issue templates for bug and conversion quality reports.

Downloads

CLI and GUI Native AOT binaries are built and uploaded automatically by GitHub Actions after this release is published.

Platform CLI Download GUI Download
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

Changes since v0.31.0

  • c539e03 Refactor code structure for improved readability and maintainability
  • 43d332d feat(tests): add TestIssue61 PDF and comparison images for validation
  • 6b45501 feat(docx): enhance TOC generation and improve CJK title handling in PDF conversion
  • b0577e1 feat(docx): refactor page field placeholder handling and improve tab leader character width calculation
  • e8b6dde feat(toc): add support for empty TOC fields and generate heading entries in PDF

Git Diff Summary

381 files changed, 3816 insertions(+), 999 deletions(-)

Main areas changed:

  • .github/ISSUE_TEMPLATE/*
  • src/MiniPdf/DocxReader.cs
  • src/MiniPdf/DocxToPdfConverter.cs
  • tests/Issue_Files/docx/*
  • tests/Issue_Files/reference_docx/*
  • tests/Issue_Files/reference_xlsx/*
  • tests/Issue_Files/reports_docx/*
  • tests/Issue_Files/reports_xlsx/*

Full Changelog: v0.31.0...v0.32.0

v0.31.0

Choose a tag to compare

@shps951023 shps951023 released this 05 Jun 14:40

What's New in v0.31.0

Highlights

  • Excel merged-cell alignment coverage -- adds a regression workbook for issue 77 to track merged-cell alignment behavior in XLSX conversion.
  • NuGet package documentation paths -- moves NuGet README files under documents/ and updates project packaging paths so package readmes resolve from the new location.
  • README cleanup -- removes unnecessary generated header text from the primary and localized README files.

Downloads

GitHub Actions will attach the CLI and GUI native AOT packages to this release after the release workflows finish.

Platform CLI GUI
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

Changes since v0.30.0

  • 9dda305 Fix README file paths in project files and remove unnecessary header
  • 2a85333 feat(excel): add test file for merged cell alignment issue
 README.md                                          |   1 -
 documents/README.fr.md                             |   1 -
 documents/README.it.md                             |   1 -
 documents/README.ja.md                             |   1 -
 documents/README.ko.md                             |   1 -
 .../README.nuget.cli.md                            |   6 +-
 README.nuget.md => documents/README.nuget.md       |   8 +-
 README.zh-CN.md => documents/README.zh-CN.md       |   1 -
 documents/README.zh-TW.md                          |   1 -
 src/MiniPdf.Cli/MiniPdf.Cli.csproj                 |   2 +-
 src/MiniPdf/ExcelToPdfConverter.cs                 | 124 +++++++++++++++------
 src/MiniPdf/MiniPdf.csproj                         |   2 +-
 .../xlsx/XlsxIssue77_MergedCellAlignment.xlsx      | Bin 0 -> 15565 bytes
 13 files changed, 95 insertions(+), 54 deletions(-)

Full Changelog: v0.30.0...v0.31.0

v0.30.0

Choose a tag to compare

@shps951023 shps951023 released this 04 Jun 06:37

What's New in v0.30.0

Highlights

  • Excel conversion quality -- adds cell border handling and text normalization improvements in the Excel reader/PDF converter path.
  • DOCX layout fixes -- improves row height calculation, cell baseline placement, and DOCX-to-PDF layout behavior.
  • Font compatibility -- improves TrueType Collection handling and font name extraction in PDF output.
  • Benchmark and issue coverage -- adds issue-file benchmark reporting, DOCX issue fixtures, XLSX issue fixtures, and comparison results for issue202605 and issue26050501.
  • Project workflow polish -- adds GitHub issue templates and funding metadata, with README badge cleanup across translated docs.

Downloads

Release assets are built and uploaded automatically after this release is published.

Platform CLI Download GUI Download
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

Changes since v0.29.0

  • 0e0be2f feat(excel): enhance Excel reading and PDF conversion with cell border handling and text normalization
  • 99687e9 feat(issue-templates): add multiple issue templates for bug reports, feature requests, documentation, and questions
  • 30a2714 fix(readme): remove unnecessary badge links from multiple language README files
  • 7e733ef feat(readme): add GitHub Sponsors badge to multiple language README files
  • 570192c fix(readme): update GitHub Sponsors badge for improved clarity
  • 5a0b6ef feat(funding): add custom funding link to FUNDING.yml
  • 560f82d feat(funding): add GitHub Sponsors link to README and create FUNDING.yml
  • 0d56324 fix(docx): improve row height calculation and cell baseline placement in PDF conversion
  • 3da245e feat(benchmark): add score reporting and comparison for XLSX and DOCX files #74
  • d7e8912 Add comparison results for issue202605 and issue26050501 to the report
  • 7e43bb5 Refactor code structure for improved readability and maintainability
  • 2c32126 fix(pdf): enhance font handling for TrueType Collections and improve font name extraction
  • 79a6dfe refactor(tests): remove obsolete benchmark test files

Git Diff Stat

 .github/FUNDING.yml                                |   2 +
 .github/ISSUE_TEMPLATE/bug_report.yml              |  83 +++
 .github/ISSUE_TEMPLATE/config.yml                  |   5 +
 .github/ISSUE_TEMPLATE/conversion_quality.yml      |  91 +++
 .github/ISSUE_TEMPLATE/documentation.yml           |  54 ++
 .github/ISSUE_TEMPLATE/feature_request.yml         |  76 +++
 .github/ISSUE_TEMPLATE/question.yml                |  70 +++
 README.md                                          |   2 -
 README.zh-CN.md                                    |   2 -
 documents/README.fr.md                             |   2 -
 documents/README.it.md                             |   2 -
 documents/README.ja.md                             |   2 -
 documents/README.ko.md                             |   2 -
 documents/README.zh-TW.md                          |   2 -
 scripts/Run-Benchmark_issues.ps1                   |  74 +++
 src/MiniPdf/DocxReader.cs                          |  75 ++-
 src/MiniPdf/DocxToPdfConverter.cs                  | 612 ++++++++++++---------
 src/MiniPdf/ExcelReader.cs                         |   9 +
 src/MiniPdf/ExcelToPdfConverter.cs                 | 115 ++--
 src/MiniPdf/PdfWriter.cs                           |  38 +-
 tests/Issue_Files/docx/issue202605.docx            | Bin 0 -> 29162 bytes
 tests/Issue_Files/docx/issue26050501.docx          | Bin 0 -> 18842 bytes
 tests/Issue_Files/reference_docx/issue202605.pdf   | Bin 0 -> 154034 bytes
 tests/Issue_Files/reference_docx/issue26050501.pdf | Bin 0 -> 111155 bytes
 tests/Issue_Files/reports_docx/comparison_report.json | 66 ++-
 tests/Issue_Files/reports_docx/comparison_report.md | 387 ++++++++++++-
 tests/Issue_Files/reports_docx/images/Class News_p1_minipdf.png | Bin 703953 -> 704021 bytes
 tests/Issue_Files/reports_docx/images/Class News_p2_minipdf.png | Bin 834413 -> 834186 bytes
 tests/Issue_Files/reports_docx/images/Class News_p3_minipdf.png | Bin 700528 -> 700600 bytes
 tests/Issue_Files/reports_docx/images/Class News_p4_minipdf.png | Bin 837157 -> 837123 bytes
 tests/Issue_Files/reports_docx/images/issue202605_p1_minipdf.png | Bin 0 -> 259243 bytes
 tests/Issue_Files/reports_docx/images/issue202605_p1_reference.png | Bin 0 -> 264757 bytes
 tests/Issue_Files/reports_docx/images/issue202605_p2_minipdf.png | Bin 0 -> 89605 bytes
 tests/Issue_Files/reports_docx/images/issue202605_p2_reference.png | Bin 0 -> 84863 bytes
 tests/Issue_Files/reports_docx/images/issue26050501_p1_minipdf.png | Bin 0 -> 340587 bytes
 tests/Issue_Files/reports_docx/images/issue26050501_p1_reference.png | Bin 0 -> 346741 bytes
 tests/Issue_Files/reports_docx/images/issue26050501_p2_minipdf.png | Bin 0 -> 240114 bytes
 tests/Issue_Files/reports_docx/images/issue26050501_p2_reference.png | Bin 0 -> 224339 bytes
 tests/Issue_Files/xlsx/XlsxIssue75.xlsx            | Bin 0 -> 137387 bytes
 tests/Issue_Files/xlsx/XlsxIssue77_Template1.xlsx  | Bin 0 -> 15870 bytes
 tests/Issue_Files/xlsx/XlsxIssue77_Template2_Workaround.xlsx | Bin 0 -> 16575 bytes
 tests/MiniPdf.Benchmark/_calc_width.py             |  70 ---
 tests/MiniPdf.Benchmark/_check_classic50.py        |  16 -
 tests/MiniPdf.Benchmark/_check_classic71.py        |  57 --
 tests/MiniPdf.Benchmark/_check_classic71_spacing.py | 51 --
 tests/MiniPdf.Benchmark/_check_classic71b.py       |  37 --
 tests/MiniPdf.Benchmark/_check_docdefaults.py      |  57 --
 tests/MiniPdf.Benchmark/_check_good_tier.py        |  11 -
 tests/MiniPdf.Benchmark/_check_scores.py           |  31 --
 tests/MiniPdf.Benchmark/_get_detail.py             |  18 -
 tests/MiniPdf.Benchmark/_tmp_stats.py              |  23 -
 51 files changed, 1433 insertions(+), 709 deletions(-)

Full Changelog: v0.29.0...v0.30.0

v0.29.0

Choose a tag to compare

@openaitx-system openaitx-system released this 30 Apr 06:34

What's New in v0.29.0

DOCX rendering fidelity release: substantial improvements to OOXML indent cascade, list label placement, CJK metrics, paragraph spacing, theme font resolution, and shape rendering. Improves Chinese/Japanese/Korean document fidelity and resolves several long-standing layout regressions.

Highlights

  • OOXML indent cascade -- correct inheritance from styles per OOXML 17.3.1.12 and 17.9.3, with auto-tab handling for inherited list paragraphs.
  • List label placement -- gate auto-tab snap on w:suff; correct CJK numbered-list label placement; prefer w:left twips over w:leftChars when both are present.
  • CJK grid metrics -- recognize Chinese font aliases; include paragraph-mark font size in cell line height; skip empty/tab-only runs from line-height max.
  • Paragraph spacing -- apply explicit pStyle SpacingBefore at top of page (narrowed to first paragraph); apply explicit SpacingBefore for first cell paragraph.
  • Theme & font resolution -- resolve theme Latin font for runs without explicit rFonts; substitute Avenir LT Pro to Times New Roman for serif embedding.
  • Shapes & anchors -- render explicit-fill shapes when stroke is also present; handle ObjectAnchor host paragraph (anchor image + shape).
  • Chinese chromatography report fidelity -- targeted improvements driven by real-world test corpus.

Downloads

Platform CLI GUI
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

NuGet package MiniPdf is published automatically via the NuGet workflow.

Changes since v0.28.0

  • dab2898 fix(docx): improve Chinese chromatography report fidelity
  • fbe2fa5 fix(docx): apply OOXML 17.9.3 ind cascade for numbered paragraphs
  • 0650b65 fix(docx): correct CJK numbered-list label placement
  • 27f7e29 fix(docx): render explicit-fill shapes when stroke is also present
  • 6267eec fix(docx): resolve theme Latin font for runs without explicit rFonts
  • b97808e fix(docx): narrow SpacingBefore-explicit-at-top-of-page to first paragraph only
  • b3fffea fix(docx): apply explicit pStyle SpacingBefore at top of page
  • a86535e DOCX: prefer w:left twips over w:leftChars when both present
  • 96213f5 DOCX: apply explicit pStyle SpacingBefore for first cell paragraph
  • c48fc2b fix(docx): substitute Avenir LT Pro to Times New Roman to embed serif
  • 6497e07 fix(docx): handle ObjectAnchor host paragraph (anchor image + shape)
  • 6017cb1 fix(docx): skip empty/tab-only runs in paragraph line-height max-Fs
  • 9ec77ef fix(docx): include paragraph mark font size in cell line height
  • 2d0bd43 fix(docx): recognize Chinese font aliases for CJK grid metrics
  • c933d02 test(nthu): regenerate report artifacts to reflect current source
  • 04a5218 fix(docx): honor OOXML w:suff to gate list label auto-tab snap
  • c620d18 fix(docx): correct OOXML indent cascade and apply auto-tab for inherited list paragraphs
  • 39b91c7 DocxReader: inherit paragraph indent from styles (OOXML 17.3.1.12)
389 files changed, 3089 insertions(+), 20324 deletions(-)

Core source changes:

  • src/MiniPdf/DocxReader.cs (+/-693 lines)
  • src/MiniPdf/DocxToPdfConverter.cs (+/-253 lines)
  • src/MiniPdf/PdfWriter.cs (+/-32 lines)

Remaining diff is benchmark report regeneration (reports_docx/ images and comparison data).

Full Changelog: v0.28.0...v0.29.0

v0.28.0

Choose a tag to compare

@openaitx-system openaitx-system released this 29 Apr 02:12

What's New in v0.28.0

Highlights

  • DOCX line-metrics & font fidelity -- font-aware top-of-page ascent, gated line-height growth on font-size jumps, Franklin Gothic line-height factor tuned to LibreOffice (1.149 -> 1.136), Times Roman widths for serif runs in Calibri-default docs, and TNR/Arial Bold wrap accuracy improvements.
  • DOCX justification & wrapping -- preserve leading tab indent, run-boundary justify gaps, snap auto-numbered list label to next default tab stop, num-aligned tab override when list label overflows hanging indent, and explicit spacingAfter flag for paragraph spacing.
  • DOCX CJK rendering -- digit-CJK gap insertion at run boundaries in the multi-format renderer, kinsoku no-end rule for opening punctuation, PDF-level CJK punctuation compression, and tolerance for Calibri Latin width overshoot in CJK runs (SA8000).
  • DOCX layout fixes -- floating images anchored to paragraph line-box top (not baseline), skip line-height advance for wrapNone anchor-image-only paragraphs, skip SpacingBefore for first paragraph in table cell, outlined Wingdings bullets, KaiTi_GB2312 / FangSong_GB2312 font alias mapping.
  • PDF engine -- cap justified line width when natural exceeds MaxWidth; split emoji range so Dingbats bullets use the text font.
  • API -- ConvertToPdf(Stream) now auto-detects DOCX vs XLSX (#70).

Downloads

Platform CLI GUI
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

Changes since v0.27.0

d3b3160 fix(docx): tune Franklin Gothic line-height factor to LibreOffice (1.136)
7f8a4d8 fix(pdf): cap justified line width when natural exceeds MaxWidth
6b44e8c fix(docx): improve MSc Thesis p2 line metrics for justified TNR
93ac363 fix(docx): improve TNR/Arial Bold wrap accuracy in Calibri-default docs
f90d086 fix(docx): font-aware top-of-page ascent and gate line-height-grow on font-size jump
82d54ce fix(api): auto-detect docx/xlsx in ConvertToPdf(Stream) (#70)
7216497 fix(docx): add explicit spacingAfter flag to handle paragraph spacing correctly
22b4d9b fix(docx): add Franklin Gothic line-height factor (1.149)
dd54d03 fix(docx): skip SpacingBefore for first paragraph in table cell
995e909 fix(docx): preserve leading tab indent and run-boundary justify gaps
d5f1673 fix(docx): use Times Roman widths for serif runs in Calibri-default docs
a0cdf3c fix(docx): outlined Wingdings bullets + drop stray leading space on wrap
8e98028 fix(docx): anchor floating images to paragraph line-box top, not baseline
db9051d fix(docx): skip line-height advance for wrapNone anchor-image-only paragraphs
05e527f fix(docx): insert digit-CJK gap at run boundaries in multi-format renderer
63b2395 fix(docx): apply CJK kinsoku no-end rule for opening punctuation
1fda6b8 fix(docx): snap auto-numbered list label to next default tab stop
fe16ec7 fix(pdf): split emoji range so Dingbats bullets use text font
4e2e4a0 Refine serif-run-in-Calibri width estimate
70d8c6b Fix left-aligned tab gap calculation in ExpandTabs
a085604 Apply CJK punctuation compression in PDF text emission
a6ae666 fix(docx): tolerate Calibri Latin width overshoot in CJK runs (SA8000)
0a3732a fix(docx): honor num-aligned tab override when list label overflows hanging indent
eed1be0 fix(docx): map KaiTi_GB2312/FangSong_GB2312 font aliases to simkai/simfang

Diff stat: 313 files changed, 2972 insertions(+), 1777 deletions(-)

Full Changelog: v0.27.0...v0.28.0

v0.27.0

Choose a tag to compare

@openaitx-system openaitx-system released this 28 Apr 01:45

What's New in v0.27.0

Highlights

This release focuses on DOCX-to-PDF rendering fidelity, with broad layout, text-wrap, and font-metric improvements plus PDF writer enhancements for image transparency and connector lines.

DOCX Conversion

  • Conditional table borders -- honor band1Horz / firstCol conditional borders so styled tables match Word output.
  • CJK baseline accuracy -- correct snap-to-grid baseline placement for KaiTi-family fonts.
  • Justified line wrapping -- justified lines now stay within the right margin even when the wrap-width estimate undercounts; trailing underlined whitespace in justified paragraphs is suppressed.
  • Wide sans-serif width estimation -- WordWrap uses a wider Helvetica reduction for wide sans-serif fonts.
  • trHeight atLeast rows -- allow rows to shrink so they stay on the current page instead of forcing a page break.
  • Floating-anchor host paragraphs -- skip lineHeight for wrapNone floating-anchor host paragraphs to avoid extra vertical space.
  • Font weight detection + Montserrat metrics -- improved bold/weight detection and Montserrat character-width tables.
  • Calibri-like font width estimation -- improved width estimation for Calibri-family fonts.
  • Bold list text -- bold formatting is preserved on numbered/bulleted list runs.
  • CJK + empty paragraph handling -- improved CJK font selection and empty-paragraph height handling.
  • Header/footer images and connector lines -- added rendering support for connector lines and header/footer images.

PDF Writer

  • Image alpha transparency -- support alpha transparency for images embedded during DOCX-to-PDF conversion.

Tooling / Repo

  • New create-release skill for automating GitHub releases with CLI and GUI AOT binaries.
  • New libreoffice-reference skill for looking up Office-to-PDF processing logic from local references.

Downloads

Platform CLI GUI
Windows x64 minipdf-win-x64.zip minipdf-gui-win-x64.zip
Windows ARM64 minipdf-win-arm64.zip minipdf-gui-win-arm64.zip
Linux x64 minipdf-linux-x64.tar.gz minipdf-gui-linux-x64.tar.gz
Linux ARM64 minipdf-linux-arm64.tar.gz minipdf-gui-linux-arm64.tar.gz
macOS x64 minipdf-osx-x64.tar.gz minipdf-gui-osx-x64.tar.gz
macOS ARM64 minipdf-osx-arm64.tar.gz minipdf-gui-osx-arm64.tar.gz

Changes since v0.26.0

1c1ef32 Refactor code structure for improved readability and maintainability
7548231 fix(docx): suppress trailing underlined whitespace in justified paragraphs
f6b0118 fix(docx): honor band1Horz/firstCol conditional borders in tables
ce42ef1 fix(docx): correct CJK snap-to-grid baseline placement for KaiTi-family fonts
684f3b0 fix(docx): justify lines fit within margin even when wrap estimate undercounts
7c0e251 fix(docx): use wider Helvetica reduction for wide sans-serif fonts in WordWrap
4d999ef update skill of obsidian
f3ede13 fix(docx): allow trHeight atLeast rows to shrink to keep on current page
666d768 fix(docx): skip lineHeight for wrapNone floating-anchor host paragraphs
b24468a feat: enhance DOCX to PDF conversion with support for font weight detection and Montserrat character widths
b696c37 feat: enhance DOCX to PDF conversion with improved font width estimation for Calibri-like fonts
146d67a feat: add support for alpha transparency in images during DOCX to PDF conversion
3227b80 Refactor code structure for improved readability and maintainability
603fdfd feat: add support for rendering connector lines and header/footer images in PDF conversion
59a0a97 feat: add support for bold list text in DOCX to PDF conversion
fac6c67 feat: enhance DOCX to PDF conversion with CJK font support and improved empty paragraph handling
9b4bd7d feat: add create-release skill for automating GitHub releases with CLI and GUI AOT binaries

Source diff stat

 src/MiniPdf/DocxReader.cs         | 615 ++++++++++++++++++++++----
 src/MiniPdf/DocxToPdfConverter.cs | 904 +++++++++++++++++++++++++++++++++-----
 src/MiniPdf/PdfPage.cs            |   7 +-
 src/MiniPdf/PdfWriter.cs          | 145 +++---
 4 files changed, 1421 insertions(+), 250 deletions(-)

Full Changelog: v0.26.0...v0.27.0