From e7abcf6f1579ae1abbe5fa1895f8c88522d22d26 Mon Sep 17 00:00:00 2001 From: Wei Lin Date: Tue, 8 Sep 2026 23:39:36 +0800 Subject: [PATCH] Fix DOCX employee directory rendering --- src/MiniPdf/DocxReader.cs | 8 +- src/MiniPdf/DocxToPdfConverter.cs | 82 +++++++--- src/MiniPdf/PdfWriter.cs | 15 +- .../reports_docx/comparison_report.json | 16 +- ...ployee_directory_with_photo_p1_minipdf.png | Bin 60417 -> 56265 bytes ...ployee_directory_with_photo_p2_minipdf.png | Bin 0 -> 13371 bytes .../MiniPdf.Tests/DocxToPdfConverterTests.cs | 147 ++++++++++++++++++ 7 files changed, 230 insertions(+), 38 deletions(-) create mode 100644 tests/MiniPdf.Benchmark/reports_docx/images/docx_classic34_employee_directory_with_photo_p2_minipdf.png diff --git a/src/MiniPdf/DocxReader.cs b/src/MiniPdf/DocxReader.cs index 26a6a2d2..da795e8d 100644 --- a/src/MiniPdf/DocxReader.cs +++ b/src/MiniPdf/DocxReader.cs @@ -1767,7 +1767,10 @@ private static void LinearizeOmmlCore(XElement el, System.Text.StringBuilder sb) var color = !string.IsNullOrEmpty(colorHex) && colorHex != "auto" ? PdfColor.FromHex(colorHex) : new PdfColor(0, 0, 0); - return new DocxBorderEdge(Math.Max(0.5f, width), color); + var space = float.TryParse(el.Attribute(W + "space")?.Value, out var parsedSpace) + ? parsedSpace + : 0f; + return new DocxBorderEdge(Math.Max(0.5f, width), color, space); } /// Like but returns @@ -5083,7 +5086,8 @@ internal sealed record DocxParagraph( /// explicit OOXML "nil"/"none" border that suppresses inheritance. internal sealed record DocxBorderEdge( float Width, // in points; 0 means explicit "nil" (suppress inherited border) - PdfColor Color + PdfColor Color, + float Space = 0 ) { public static readonly DocxBorderEdge Nil = new(0f, new PdfColor(0, 0, 0)); diff --git a/src/MiniPdf/DocxToPdfConverter.cs b/src/MiniPdf/DocxToPdfConverter.cs index 2c2f5ed5..bbb51e9f 100644 --- a/src/MiniPdf/DocxToPdfConverter.cs +++ b/src/MiniPdf/DocxToPdfConverter.cs @@ -1074,11 +1074,15 @@ private static void RenderParagraph(RenderState state, DocxParagraph paragraph, || (isVeryFirstParagraph && paragraph.SpacingBeforeExplicit))) { var extraBefore = options.CollapseParagraphSpacing + && !(paragraph.Runs.Count == 0 && paragraph.Images.Count == 0 && paragraph.Borders != null) ? spacingBefore - state.LastSpacingAfter : spacingBefore; if (extraBefore > 0) { - state.AdvanceY(extraBefore); + if (isVeryFirstParagraph) + state.CurrentY -= extraBefore; + else + state.AdvanceY(extraBefore); } } @@ -1135,7 +1139,8 @@ private static void RenderParagraph(RenderState state, DocxParagraph paragraph, if (baselineToTopOffset < 0) baselineToTopOffset = 0; state.LastParagraphStartY = state.CurrentY + baselineToTopOffset; - var totalEmptyAdvance = lineHeight; + var emptyBorderWidth = paragraph.Borders?.Bottom?.Width ?? 0f; + var totalEmptyAdvance = Math.Max(0f, lineHeight - emptyBorderWidth); var spacingAfterEmpty = paragraph.SpacingAfter >= 0 ? paragraph.SpacingAfter : 0f; totalEmptyAdvance += spacingAfterEmpty; @@ -1153,6 +1158,7 @@ private static void RenderParagraph(RenderState state, DocxParagraph paragraph, : fontSize * GetTopOfPageAscentRatio(paraFontName, ResolveLineSpacingMul(paragraph, options)); state.AdvanceY(emptyAscentOffset); } + RenderParagraphBorders(state, paragraph, state.CurrentY, state.CurrentY, isEmptyParagraph: true); state.AdvanceY(totalEmptyAdvance); // If the empty paragraph pushed past the bottom margin, accumulate // the overflow as pending vertical space for the next page so that @@ -1538,7 +1544,10 @@ private static void RenderParagraph(RenderState state, DocxParagraph paragraph, deferredImagesTotalHeight += imgH + 1f; continue; } - RenderImage(state, image, paragraph.Alignment); + var inlineImageOffset = paragraph.Runs.Count == 0 && !image.IsAnchor + ? fontSize * GetTopOfPageAscentRatio(paraFontName, ResolveLineSpacingMul(paragraph, options)) + : 0f; + RenderImage(state, image, paragraph.Alignment, inlineImageOffset); } // Proactive page break: if text + deferred wrapTopAndBottom images @@ -1901,17 +1910,19 @@ private static void RenderParagraph(RenderState state, DocxParagraph paragraph, if (paragraph.Alignment == "both" && renderMaxWidth == null) renderMaxWidth = lineW; + var renderY = state.CurrentY + GetHeadingBaselineOffset(paragraph, runFontName, runBold); + if (runShading != null) { var shadingWidth = textWidth + wordSpacing * line.Count(c => c == ' '); if (renderMaxWidth.HasValue) shadingWidth = Math.Min(shadingWidth, renderMaxWidth.Value); var padX = Math.Max(0.7f, runFontSize * 0.08f); - state.CurrentPage!.AddRectangle(renderX - padX, state.CurrentY - runFontSize * 0.24f, + state.CurrentPage!.AddRectangle(renderX - padX, renderY - runFontSize * 0.24f, shadingWidth + padX * 2, runFontSize * 1.18f, runShading); } - state.CurrentPage!.AddText(line, renderX, state.CurrentY, runFontSize, runColor, maxWidth: renderMaxWidth, bold: runBold, italic: runItalic, underline: runUnderline, charSpacing: runCharSpacing, wordSpacing: wordSpacing, preferredFontName: runFontName); + state.CurrentPage!.AddText(line, renderX, renderY, runFontSize, runColor, maxWidth: renderMaxWidth, bold: runBold, italic: runItalic, underline: runUnderline, charSpacing: runCharSpacing, wordSpacing: wordSpacing, preferredFontName: runFontName); state.AdvanceY(lineHeight); } s_overrideWidths = null; @@ -1924,24 +1935,7 @@ private static void RenderParagraph(RenderState state, DocxParagraph paragraph, // wrapping is now governed by the right-edge check during run rendering, // and the overflow-tolerance heuristic prevents spurious multi-line wraps // for short equation/overlay paragraphs.) - // Render paragraph borders - if (paragraph.Borders != null && state.CurrentPage != null) - { - var bdr = paragraph.Borders; - var paraLeft = options.MarginLeft + paragraph.IndentLeft; - var paraRight = options.MarginLeft + state.UsableWidth - paragraph.IndentRight; - var paraTop = paragraphStartY; - var paraBottom = state.CurrentY; - - if (bdr.Top != null) - state.CurrentPage.AddLine(paraLeft, paraTop, paraRight, paraTop, bdr.Top.Color, bdr.Top.Width); - if (bdr.Bottom != null) - state.CurrentPage.AddLine(paraLeft, paraBottom, paraRight, paraBottom, bdr.Bottom.Color, bdr.Bottom.Width); - if (bdr.Left != null) - state.CurrentPage.AddLine(paraLeft, paraTop, paraLeft, paraBottom, bdr.Left.Color, bdr.Left.Width); - if (bdr.Right != null) - state.CurrentPage.AddLine(paraRight, paraTop, paraRight, paraBottom, bdr.Right.Color, bdr.Right.Width); - } + RenderParagraphBorders(state, paragraph, paragraphStartY, state.CurrentY); // Render text box border (outline rectangle around text box content) if (paragraph.TextBoxBorder is { } tb && state.CurrentPage != null) @@ -2003,6 +1997,32 @@ private static void RenderParagraph(RenderState state, DocxParagraph paragraph, } + private static void RenderParagraphBorders(RenderState state, DocxParagraph paragraph, float paragraphTop, float paragraphBottom, + bool isEmptyParagraph = false) + { + if (paragraph.Borders == null || state.CurrentPage == null) + return; + + var borders = paragraph.Borders; + var paragraphLeft = state.Options.MarginLeft + paragraph.IndentLeft; + var paragraphRight = state.Options.MarginLeft + state.UsableWidth - paragraph.IndentRight; + var topSpace = isEmptyParagraph ? 0f : borders.Top?.Space ?? 0f; + var bottomSpace = isEmptyParagraph ? 0f : borders.Bottom?.Space ?? 0f; + + if (borders.Top != null) + state.CurrentPage.AddLine(paragraphLeft - borders.Top.Space, paragraphTop + topSpace, + paragraphRight + borders.Top.Space, paragraphTop + topSpace, borders.Top.Color, borders.Top.Width); + if (borders.Bottom != null) + state.CurrentPage.AddLine(paragraphLeft - borders.Bottom.Space, paragraphBottom - bottomSpace, + paragraphRight + borders.Bottom.Space, paragraphBottom - bottomSpace, borders.Bottom.Color, borders.Bottom.Width); + if (borders.Left != null) + state.CurrentPage.AddLine(paragraphLeft - borders.Left.Space, paragraphTop + borders.Left.Space, + paragraphLeft - borders.Left.Space, paragraphBottom - borders.Left.Space, borders.Left.Color, borders.Left.Width); + if (borders.Right != null) + state.CurrentPage.AddLine(paragraphRight + borders.Right.Space, paragraphTop + borders.Right.Space, + paragraphRight + borders.Right.Space, paragraphBottom - borders.Right.Space, borders.Right.Color, borders.Right.Width); + } + /// /// Renders floating text boxes (wrapNone) at their absolute page positions. /// These text boxes do not affect the normal document flow. @@ -3304,7 +3324,7 @@ private static void RenderShapeGeometry(PdfPage page, float x, float y, float wi // ── Image rendering ───────────────────────────────────────────────── - private static void RenderImage(RenderState state, DocxImage image, string alignment = "left") + private static void RenderImage(RenderState state, DocxImage image, string alignment = "left", float inlineVerticalOffset = 0) { const float emuPerPoint = 914400f / 72f; @@ -3392,7 +3412,10 @@ private static void RenderImage(RenderState state, DocxImage image, string align x = state.Options.MarginLeft + (state.UsableWidth - width) / 2; else if (alignment == "right") x = state.Options.MarginLeft + state.UsableWidth - width; - var y = state.CurrentY - height; + var y = state.CurrentY - height + inlineVerticalOffset; + var maximumY = state.Options.PageHeight - state.Options.MarginTop - height; + if (y > maximumY) + y = maximumY; state.CurrentPage!.AddImage(image.Data, format, x, y, width, height); state.AdvanceY(height + 1f); // 1pt gap after image @@ -4775,6 +4798,15 @@ private static bool IsLargeCjkTitle(DocxParagraph paragraph) return false; } + private static float GetHeadingBaselineOffset(DocxParagraph paragraph, string? fontName, bool bold) + { + if (!bold || string.IsNullOrEmpty(fontName) + || !fontName.Contains("Calibri", StringComparison.OrdinalIgnoreCase)) + return 0f; + + return paragraph.StyleId is "Heading1" or "Heading2" ? 1.6f : 0f; + } + private static bool ContainsCjk(string text) { foreach (var ch in text) diff --git a/src/MiniPdf/PdfWriter.cs b/src/MiniPdf/PdfWriter.cs index 2f3291a0..1c3976bd 100644 --- a/src/MiniPdf/PdfWriter.cs +++ b/src/MiniPdf/PdfWriter.cs @@ -96,8 +96,7 @@ internal void Write(PdfDocument document) // Exclude common Latin fonts (Calibri, Arial, etc.) that are adequately // substituted by the built-in Helvetica — keeping those in the WinAnsi // (direct ASCII) encoding path so text content remains inspectable. - if (!blockNeedsUnicode && !string.IsNullOrWhiteSpace(block.PreferredFontName) - && !_latinFontSubstitutes.Contains(block.PreferredFontName!) + if (!blockNeedsUnicode && ShouldEmbedPreferredFont(block) && FindSystemFontByPreferredName(block.PreferredFontName!) != null) blockNeedsUnicode = true; if (blockNeedsUnicode) @@ -132,7 +131,7 @@ internal void Write(PdfDocument document) foreach (var block in page.TextBlocks) { if (string.IsNullOrWhiteSpace(block.PreferredFontName)) continue; - if (_latinFontSubstitutes.Contains(block.PreferredFontName!) + if (!ShouldEmbedPreferredFont(block) && !cpsByPreferredFont.ContainsKey(block.PreferredFontName!)) continue; bool allWinAnsi = true; foreach (var ch in block.Text) @@ -2478,6 +2477,15 @@ private static List FindSystemFontCandidates() "Segoe UI", "Segoe UI Light", "Segoe UI Semibold", }; + private static bool ShouldEmbedPreferredFont(PdfTextBlock block) + { + if (string.IsNullOrWhiteSpace(block.PreferredFontName)) + return false; + + return !_latinFontSubstitutes.Contains(block.PreferredFontName) + || (block.Bold && string.Equals(block.PreferredFontName, "Calibri", StringComparison.OrdinalIgnoreCase)); + } + /// /// Lazily-built cache: normalized font name → system font file path. /// Built on first access by scanning the system fonts directory and reading @@ -2981,6 +2989,7 @@ private static (string family, string fullName) ReadFontNames(byte[] ttf, int ba { ["Times New Roman"] = ["times.ttf"], ["Calibri"] = ["calibri.ttf"], + ["Calibri Bold"] = ["calibrib.ttf"], ["Cambria"] = ["cambria.ttc"], ["Courier New"] = ["cour.ttf"], ["Verdana"] = ["verdana.ttf"], diff --git a/tests/MiniPdf.Benchmark/reports_docx/comparison_report.json b/tests/MiniPdf.Benchmark/reports_docx/comparison_report.json index 41a900ca..a548a46d 100644 --- a/tests/MiniPdf.Benchmark/reports_docx/comparison_report.json +++ b/tests/MiniPdf.Benchmark/reports_docx/comparison_report.json @@ -987,20 +987,20 @@ "name": "docx_classic34_employee_directory_with_photo", "minipdf_exists": true, "reference_exists": true, - "minipdf_size": 422597, + "minipdf_size": 975599, "reference_size": 99625, "pdf_valid": true, - "minipdf_pages": 1, + "minipdf_pages": 2, "reference_pages": 2, "text_similarity": 1.0, "flat_text_similarity": 1.0, "word_text_similarity": 1.0, - "text_diff": "--- minipdf/docx_classic34_employee_directory_with_photo.pdf\n+++ reference/docx_classic34_employee_directory_with_photo.pdf\n@@ -10,4 +10,5 @@\n Carol Williams\n\n UX Designer\n\n Email: carol@company.com\n\n+---PAGE---\n\n Department: Design", + "text_diff": "(identical)", "visual_scores": [ - 0.9758, - 0.0 + 0.995, + 0.9987 ], - "visual_avg": 0.4879, + "visual_avg": 0.9969, "diff_images": [ { "page": 1, @@ -1009,11 +1009,11 @@ }, { "page": 2, - "minipdf_img": null, + "minipdf_img": "docx_classic34_employee_directory_with_photo_p2_minipdf.png", "reference_img": "docx_classic34_employee_directory_with_photo_p2_reference.png" } ], - "overall_score": 0.6952 + "overall_score": 0.9988 }, { "name": "docx_classic34_paragraph_borders", diff --git a/tests/MiniPdf.Benchmark/reports_docx/images/docx_classic34_employee_directory_with_photo_p1_minipdf.png b/tests/MiniPdf.Benchmark/reports_docx/images/docx_classic34_employee_directory_with_photo_p1_minipdf.png index 7b8069b38d111711781e5a7a05aa2568fb6504ac..33bcdfb6d3938293ccd21cdfbeadbd93a648a955 100644 GIT binary patch literal 56265 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 j-Z2D-g_(egr55^tCd`& literal 60417 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 diff --git a/tests/MiniPdf.Benchmark/reports_docx/images/docx_classic34_employee_directory_with_photo_p2_minipdf.png b/tests/MiniPdf.Benchmark/reports_docx/images/docx_classic34_employee_directory_with_photo_p2_minipdf.png new file mode 100644 index 0000000000000000000000000000000000000000..2d201c79fb78acc6b06b0b7d724a75ff10aa8133 GIT binary patch literal 13371 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 2, $"Expected at least 2 pages, got {doc.Pages.Count}"); } + [Fact] + public void Convert_FirstParagraphSpacingBefore_PreservesFullOffset() + { + using var unspacedStream = CreateDocxWithFirstParagraphSpacingBefore(0); + using var spacedStream = CreateDocxWithFirstParagraphSpacingBefore(480); + + var unspaced = DocxToPdfConverter.Convert(unspacedStream); + var spaced = DocxToPdfConverter.Convert(spacedStream); + var unspacedY = Assert.Single(unspaced.Pages[0].TextBlocks).Y; + var spacedY = Assert.Single(spaced.Pages[0].TextBlocks).Y; + + Assert.InRange(unspacedY - spacedY, 23.9f, 24.1f); + } + + [Fact] + public void Convert_EmptyBorderedParagraph_PreservesItsSpacingBefore() + { + using var unspacedStream = CreateDocxWithEmptyBorderedParagraph(0); + using var spacedStream = CreateDocxWithEmptyBorderedParagraph(120); + + var unspaced = DocxToPdfConverter.Convert(unspacedStream); + var spaced = DocxToPdfConverter.Convert(spacedStream); + var unspacedAfterY = unspaced.Pages[0].TextBlocks.Single(block => block.Text == "After").Y; + var spacedAfterY = spaced.Pages[0].TextBlocks.Single(block => block.Text == "After").Y; + + Assert.InRange(unspacedAfterY - spacedAfterY, 5.9f, 6.1f); + var spacedLine = Assert.Single(spaced.Pages[0].LineBlocks); + + using var zeroBorderSpaceStream = CreateDocxWithEmptyBorderedParagraph(120, borderSpacePt: 0); + var zeroBorderSpace = DocxToPdfConverter.Convert(zeroBorderSpaceStream); + var zeroBorderSpaceLine = Assert.Single(zeroBorderSpace.Pages[0].LineBlocks); + Assert.InRange(spacedLine.Y1 - zeroBorderSpaceLine.Y1, -0.1f, 0.1f); + Assert.InRange(zeroBorderSpaceLine.X1 - spacedLine.X1, 0.9f, 1.1f); + } + [Fact] public void Convert_WithTable_RendersCellText() { @@ -264,6 +299,20 @@ public void Convert_DocxWithPngImage_ProducesValidXrefOffsets() AssertXrefOffsetsAreCorrect(bytes); } + [Fact] + public void Convert_ImageOnlyParagraph_AlignsImageToParagraphBaseline() + { + using var docxStream = CreateDocxWithPngImage(); + + var doc = DocxToPdfConverter.Convert(docxStream); + var page = Assert.Single(doc.Pages); + var beforeImage = page.TextBlocks.Single(block => block.Text == "Before image"); + var image = Assert.Single(page.ImageBlocks); + var imageTop = image.Y + image.RenderHeight; + + Assert.InRange(beforeImage.Y - imageTop, 2.9f, 3.1f); + } + [Fact] public void Convert_DocxWithRootRelativeImageRelationship_RendersImage() { @@ -681,6 +730,104 @@ private static MemoryStream CreateSimpleDocx(params string[] paragraphs) return ms; } + private static MemoryStream CreateDocxWithFirstParagraphSpacingBefore(int beforeTwips) + { + var ms = new MemoryStream(); + + using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, leaveOpen: true)) + { + AddEntry(archive, "[Content_Types].xml", + """ + + + + + + + """); + + AddEntry(archive, "_rels/.rels", + """ + + + + + """); + + AddEntry(archive, "word/document.xml", + $$""" + + + + + + First paragraph + + + + """); + } + + ms.Position = 0; + return ms; + } + + private static MemoryStream CreateDocxWithEmptyBorderedParagraph(int beforeTwips, int lineTwips = 276, int borderSpacePt = 1) + { + var ms = new MemoryStream(); + + using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, leaveOpen: true)) + { + AddEntry(archive, "[Content_Types].xml", + """ + + + + + + + """); + + AddEntry(archive, "_rels/.rels", + """ + + + + + """); + + AddEntry(archive, "word/document.xml", + $$""" + + + + Before + + + + + + + After + + + """); + + AddEntry(archive, "word/styles.xml", + $$""" + + + + + + + """); + } + + ms.Position = 0; + return ms; + } + private static MemoryStream CreateDocxWithTable(params string[][] rows) { var ms = new MemoryStream();