Browse Source

ComPDFKit.Demo(win) - 修复打印异常情况:可打印区域大于纸张本身尺寸

liuaoran 6 months ago
parent
commit
0aaa751489
1 changed files with 4 additions and 4 deletions
  1. 4 4
      Demo/Examples/Compdfkit.Controls/Printer/PrinterDialog.xaml.cs

+ 4 - 4
Demo/Examples/Compdfkit.Controls/Printer/PrinterDialog.xaml.cs

@@ -154,7 +154,7 @@ namespace ComPDFKit.Controls.PDFControl
             printSettingsInfo.IsPrintAnnot = true;
             printSettingsInfo.IsPrintForm = true;
             printSettingsInfo.IsReverseOrder = false;
-            printSettingsInfo.IsGrayscale = false; 
+            printSettingsInfo.IsGrayscale = false;
 
             printSettingsInfo.DuplexPrintMod = DuplexPrintMod.None;
             printSettingsInfo.PageRangeList = Enumerable.Range(0, Document.PageCount).ToList();
@@ -199,15 +199,15 @@ namespace ComPDFKit.Controls.PDFControl
                     return;
                 }
 
-
                 PrintTicket printTicket = printQueue.DefaultPrintTicket;
                 PrintCapabilities printCapabilities = printQueue.GetPrintCapabilities();
                 double printableWidth = printCapabilities.PageImageableArea.ExtentWidth / 0.96;
                 double printableHeight = printCapabilities.PageImageableArea.ExtentHeight / 0.96;
                 double originWidth = printCapabilities.PageImageableArea.OriginWidth / 0.96;
                 double originHeight = printCapabilities.PageImageableArea.OriginHeight / 0.96;
-                printSettingsInfo.Margins = new Thickness() { Left = originWidth, Top = originHeight, Right = printSettingsInfo.PaperSize.Width - originHeight - printableWidth, Bottom = printSettingsInfo.PaperSize.Height - originWidth - printableHeight };
-
+                double marginRight = printSettingsInfo.PaperSize.Width - originWidth - printableWidth;
+                double marginBottom = printSettingsInfo.PaperSize.Height - originHeight - printableHeight;
+                printSettingsInfo.Margins = new Thickness() { Left = originWidth, Top = originHeight, Right = (marginRight >= 0) ? marginRight : 0, Bottom = (marginBottom >= 0) ? marginBottom : 0 };
                 if (isInited)
                 {
                     ctlPreview.Init(printSettingsInfo);