Update text truncation logic to use rendered width

Replaced character-based truncation with pixel-accurate truncation based on rendered width in inches. Updated `TruncateText` in `PDFBurner.vb` to use `Graphics.MeasureString` for width calculation and introduced a binary search for efficient truncation. Renamed `egName` to `fieldEgName` for clarity.

Replaced `TextMaxLengths` with `TextMaxWidths` in `PDFBurnerParams.vb`, specifying maximum render widths in inches. Updated default values for `position`, `city`, and `date`. Revised XML documentation to reflect the new truncation logic.
This commit is contained in:
2026-08-25 09:47:22 +02:00
parent feaea1626b
commit 35c1374b9c
2 changed files with 39 additions and 14 deletions

View File

@@ -20,15 +20,16 @@ Namespace Jobs.FinalizeDocument
Public Property TruncationSuffix As String = ".."
''' <summary>
''' Per-field maximum character count (including the TruncationSuffix).
''' If a value exceeds the limit it is cut and TruncationSuffix is appended.
''' Per-field maximum render width in inches.
''' Text is measured using the configured Font/FontSize via Graphics.MeasureString (pixel-accurate).
''' If the rendered width exceeds the limit, the text is cut and TruncationSuffix is appended.
''' Keys must match egName values used in PDFBurner (e.g. "name", "position", "city", "date").
''' Set a value to 0 to disable truncation for that field.
''' </summary>
Public Property TextMaxLengths As New Dictionary(Of String, Integer) From {
{"position", 20},
{"city", 20},
{"date", 28}
Public Property TextMaxWidths As New Dictionary(Of String, Single) From {
{"position", 1.25F},
{"city", 1.25F},
{"date", 2.0F}
}
End Class
End Namespace