Printing: Change fit-to-printable-are to scale 1:1
Test / Run tests (push) Successful in 2m40s

This commit is contained in:
2026-08-11 17:25:49 +02:00
parent 20b19775b1
commit 470c6e09e5
2 changed files with 14 additions and 17 deletions
+4 -15
View File
@@ -52,21 +52,10 @@ namespace Elwig.Helpers.Printing {
throw new InvalidOperationException($"Unable to load PDF page {pageIndex}.");
try {
// PDF coordinates are points (1/72 inch).
//
// HORZRES/VERTRES are the printable area in
// device pixels for the current printer DC.
int widthPx = printer.PixelWidth;
int heightPx = printer.PixelHeight;
// Preserve aspect ratio.
double scaleX = widthPx / pageWidthPt;
double scaleY = heightPx / pageHeightPt;
double scale = Math.Min(scaleX, scaleY);
int renderWidth = Math.Max(1, (int)Math.Round(pageWidthPt * scale));
int renderHeight = Math.Max(1, (int)Math.Round(pageHeightPt * scale));
int offsetX = (widthPx - renderWidth) / 2;
int offsetY = (heightPx - renderHeight) / 2;
int renderWidth = (int)Math.Round(pageWidthPt / 72.0 * printer.DpiX);
int renderHeight = (int)Math.Round(pageHeightPt / 72.0 * printer.DpiY);
int offsetX = (printer.PrintableWidth - renderWidth) / 2;
int offsetY = (printer.PrintableHeight - renderHeight) / 2;
printer.StartPage();
try {