From 88e4196c9c35954a344119c14cac140d02701b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4llman?= Date: Fri, 4 Sep 2026 13:44:23 +0200 Subject: [PATCH 1/2] Fixes verification exception in .NET framework --- .../DocumentObjects/Fonts/PdfCIDFont.cs | 10 +++++----- src/EPPlus/Export/PdfExport/TextMapping/PdfTextMap.cs | 1 + src/EPPlusTest/Issues/ExportIssues.cs | 11 +++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/EPPlus.Export.Pdf/DocumentObjects/Fonts/PdfCIDFont.cs b/src/EPPlus.Export.Pdf/DocumentObjects/Fonts/PdfCIDFont.cs index f6f675cdfe..569c24ba52 100644 --- a/src/EPPlus.Export.Pdf/DocumentObjects/Fonts/PdfCIDFont.cs +++ b/src/EPPlus.Export.Pdf/DocumentObjects/Fonts/PdfCIDFont.cs @@ -33,7 +33,7 @@ internal class PdfCIDFont : PdfObject private readonly CIDSystemInfo CIDInfoObject; private readonly int FontDescriptorObjectNumber; - private readonly int? DW; // Default width + private int? DW; // Default width private readonly List W; // Width array private readonly int[] DW2; // Default metrics for vertical writing (2 numbers) private readonly List W2; // Vertical writing metrics @@ -85,9 +85,9 @@ internal override string RenderDictionary() if (Subtype == CIDFontSubtype.CIDFontType2) { if(string.IsNullOrEmpty( CIDToGIDMap )) - sb.AppendFormat($"\n /CIDToGIDMap {CIDToGIDMap}"); - else sb.AppendFormat($"\n /CIDToGIDMap /Identity"); + else + sb.AppendFormat($"\n /CIDToGIDMap {CIDToGIDMap}"); } sb.Append(" >>"); return sb.ToString(); @@ -121,9 +121,9 @@ internal override void RenderDictionary(BinaryWriter bw) if (Subtype == CIDFontSubtype.CIDFontType2) { if (string.IsNullOrEmpty(CIDToGIDMap)) - sb.AppendFormat($"\n /CIDToGIDMap {CIDToGIDMap}"); - else sb.AppendFormat($"\n /CIDToGIDMap /Identity"); + else + sb.AppendFormat($"\n /CIDToGIDMap {CIDToGIDMap}"); } sb.Append(" >>"); WriteAscii(bw, sb.ToString()); diff --git a/src/EPPlus/Export/PdfExport/TextMapping/PdfTextMap.cs b/src/EPPlus/Export/PdfExport/TextMapping/PdfTextMap.cs index 48ca92bee7..e59f29aada 100644 --- a/src/EPPlus/Export/PdfExport/TextMapping/PdfTextMap.cs +++ b/src/EPPlus/Export/PdfExport/TextMapping/PdfTextMap.cs @@ -748,6 +748,7 @@ internal static PdfHeaderFooter GetTextFormats(PdfPageSettings pageSettings, Pdf /// The number of columns to add. internal static int AddColumnsForNonWrappedText(PdfPageSettings pageSettings, ExcelWorksheet ws, PdfWorksheet pdfSheet) { + if (ws.Dimension == null) return 0; //If dimension is null, there are no cells to check, so return 0. int columnsToAdd = 0; var catalog = new PdfCatalog(); var lastColumn = ws.Dimension.End.Column; diff --git a/src/EPPlusTest/Issues/ExportIssues.cs b/src/EPPlusTest/Issues/ExportIssues.cs index 7f1bf9b631..ed7a70f970 100644 --- a/src/EPPlusTest/Issues/ExportIssues.cs +++ b/src/EPPlusTest/Issues/ExportIssues.cs @@ -1,4 +1,5 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; +using OfficeOpenXml; using System; using System.Collections.Generic; using System.Linq; @@ -52,5 +53,15 @@ public void HtmlExportCRLFIssus2095() Assert.AreEqual(cell, "this\nis\na\nbug"); } } + [TestMethod] + public void GlyphPositioning_KerningAndMarkOffsets() + { + using var package = new ExcelPackage(); + var ws = package.Workbook.Worksheets.Add("Sheet1"); + ws.Cells["A1"].Value = "Test"; + ws.Cells["A1:A2"].AutoFitColumns(); + ws.SaveAsPdf(@"c:\epplusTest\Testoutput\GlyphPositioning.pdf"); + } + } } From 43dfb2f1884101c643261e01f6c60fd8d253252f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?AdrianParn=C3=A9us?= Date: Fri, 4 Sep 2026 14:35:18 +0200 Subject: [PATCH 2/2] Added 481 to pdfTest and fixed exception. --- src/EPPlus.Export.Pdf.Tests/App.config | 10 ++++++++++ .../EPPlus.Export.Pdf.Tests.csproj | 2 +- .../DocumentObjects/PdfBorderRenderer.cs | 14 +++++++------- 3 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 src/EPPlus.Export.Pdf.Tests/App.config diff --git a/src/EPPlus.Export.Pdf.Tests/App.config b/src/EPPlus.Export.Pdf.Tests/App.config new file mode 100644 index 0000000000..bdad390234 --- /dev/null +++ b/src/EPPlus.Export.Pdf.Tests/App.config @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/EPPlus.Export.Pdf.Tests/EPPlus.Export.Pdf.Tests.csproj b/src/EPPlus.Export.Pdf.Tests/EPPlus.Export.Pdf.Tests.csproj index f1f6504fb1..ab727dd81a 100644 --- a/src/EPPlus.Export.Pdf.Tests/EPPlus.Export.Pdf.Tests.csproj +++ b/src/EPPlus.Export.Pdf.Tests/EPPlus.Export.Pdf.Tests.csproj @@ -1,7 +1,7 @@  - net8.0 + net481;net8.0 latest enable True diff --git a/src/EPPlus.Export.Pdf/DocumentObjects/PdfBorderRenderer.cs b/src/EPPlus.Export.Pdf/DocumentObjects/PdfBorderRenderer.cs index 0c385f71c9..93492cbf26 100644 --- a/src/EPPlus.Export.Pdf/DocumentObjects/PdfBorderRenderer.cs +++ b/src/EPPlus.Export.Pdf/DocumentObjects/PdfBorderRenderer.cs @@ -18,17 +18,17 @@ namespace EPPlus.Export.Pdf.DocumentObjects { internal class PdfBorderRenderer { - private readonly PdfCellBorderData Top; - private readonly PdfCellBorderData Bottom; - private readonly PdfCellBorderData Left; - private readonly PdfCellBorderData Right; - private readonly PdfCellBorderData DiagonalUp; - private readonly PdfCellBorderData DiagonalDown; + private PdfCellBorderData Top; + private PdfCellBorderData Bottom; + private PdfCellBorderData Left; + private PdfCellBorderData Right; + private PdfCellBorderData DiagonalUp; + private PdfCellBorderData DiagonalDown; private readonly double X; private readonly double Y; private readonly string Name; private readonly bool IsMerged; - private readonly MergedCellDrawInfo info; + private MergedCellDrawInfo info; private readonly double Width; private readonly double Height;