Skip to content

Improve Java DOCX pagination and rendering fidelity - #179

Merged
shps951023 merged 3 commits into
mainfrom
fix/java-docx-pagination-orientation
Sep 16, 2026
Merged

shps951023 merged 3 commits into
mainfrom
fix/java-docx-pagination-orientation

Conversation

@shps951023

@shps951023 shps951023 commented Sep 16, 2026

Copy link
Copy Markdown
Member

Summary

  • preserve multi-page DOCX form layout
  • preserve footers and mixed-script pagination
  • preserve table fonts and skip unsupported pictures

This follows PR #178 with the additional commits that were pushed to the same branch after that PR merged.

Validation

  • mvn -f D:/git/MiniPdf-java-docx/minipdf-java/pom.xml -pl minipdf -am '-Dtest=ClassicFixtureSmokeTest,PoiDocxRendererTest' '-Dsurefire.failIfNoSpecifiedTests=false' test
  • 22 tests passed, 0 failures, 0 errors
  • git diff --check origin/main...origin/fix/java-docx-pagination-orientation
  • merge-tree simulation against current origin/main completed without conflicts

Compatibility

No public API changes. Changes are scoped to Java DOCX rendering and regression tests.

Summary by CodeRabbit

  • New Features

    • Improved DOCX conversion for documents containing tables.
    • Added support for multi-page DOCX rendering, page numbers, document margins, and footer content.
    • Improved mixed-font and East Asian text layout, including wrapping, spacing, indentation, and alignment.
    • Enhanced table rendering across varied page orientations and formatting.
  • Bug Fixes

    • DOCX files with unsupported pictures can now convert successfully.
    • Preserved literal text surrounding page-number fields during conversion.

@shps951023
shps951023 merged commit cec055e into main Sep 16, 2026
1 of 2 checks passed
@coderabbitai

coderabbitai Bot commented Sep 16, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 14a5c8cb-7338-4f16-8edd-8b709cae4340

📥 Commits

Reviewing files that changed from the base of the PR and between 783a978 and 50d4eac.

📒 Files selected for processing (4)
  • minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/docx/DocxConverter.java
  • minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/docx/PoiDocxRenderer.java
  • minipdf-java/minipdf/src/test/java/io/github/minisoftware/minipdf/ClassicFixtureSmokeTest.java
  • minipdf-java/minipdf/src/test/java/io/github/minisoftware/minipdf/internal/docx/PoiDocxRendererTest.java

📝 Walkthrough

Walkthrough

Changes

DOCX rendering

Layer / File(s) Summary
Text layout and font resolution
minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/docx/PoiDocxRenderer.java, minipdf-java/minipdf/src/test/java/io/github/minisoftware/minipdf/internal/docx/PoiDocxRendererTest.java
The renderer resolves fonts per run, supports East Asian spacing, and wraps text at script and punctuation boundaries. Unit tests cover these helpers.
Multi-page rendering and page fields
minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/docx/DocxConverter.java, minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/docx/PoiDocxRenderer.java, minipdf-java/minipdf/src/test/java/io/github/minisoftware/minipdf/ClassicFixtureSmokeTest.java
Documents with tables use structured rendering. The renderer now emits multiple pages, derives page settings, renders page numbers, and skips unsupported pictures. Smoke tests cover these cases.
Table layout and borders
minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/docx/PoiDocxRenderer.java
Tables use resolved cell fonts, grid-aligned row heights, adjusted spacing, and table-level border fallbacks.

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant DocxConverter
  participant PoiDocxRenderer
  participant PageContext
  participant PDFBox
  DocxConverter->>PoiDocxRenderer: render DOCX with tables
  PoiDocxRenderer->>PageContext: derive page layout and footer data
  PageContext->>PDFBox: render paragraphs, tables, and page numbers
  PDFBox-->>DocxConverter: return multi-page PDF
Loading
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/java-docx-pagination-orientation

Comment @coderabbitai help to get the list of available commands.

@shps951023
shps951023 deleted the fix/java-docx-pagination-orientation branch September 16, 2026 08:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant