mirror of
https://github.com/QL-Win/QuickLook.git
synced 2025-09-11 17:59:17 +00:00
fix Pdf zoom-to-fit issue when switching pages
This commit is contained in:
@@ -39,8 +39,8 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
var dpiX = fixDpi ? scale.Horizontal * DpiHelper.DefaultDpi : 96;
|
||||
var dpiY = fixDpi ? scale.Vertical * DpiHelper.DefaultDpi : 96;
|
||||
|
||||
var realWidth = (int) Math.Ceiling(page.Width * (dpiX / 72) * factor);
|
||||
var realHeight = (int) Math.Ceiling(page.Height * (dpiY / 72) * factor);
|
||||
var realWidth = (int) Math.Round(page.Width * scale.Horizontal * factor);
|
||||
var realHeight = (int) Math.Round(page.Height * scale.Vertical * factor);
|
||||
|
||||
var bitmap = new WriteableBitmap(realWidth, realHeight, dpiX, dpiY, PixelFormats.Bgr24, null);
|
||||
page.Render(bitmap,
|
||||
|
@@ -56,8 +56,6 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
public ObservableCollection<BitmapSource> PageThumbnails { get; set; } =
|
||||
new ObservableCollection<BitmapSource>();
|
||||
|
||||
public PdfDocument PdfHandleForThumbnails { get; private set; }
|
||||
|
||||
public PdfDocument PdfHandle { get; private set; }
|
||||
|
||||
public int TotalPages => PdfHandle.Pages.Count;
|
||||
@@ -86,8 +84,6 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
}
|
||||
|
||||
_pdfLoaded = false;
|
||||
PdfHandleForThumbnails?.Close();
|
||||
PdfHandleForThumbnails = null;
|
||||
PdfHandle?.Close();
|
||||
PdfHandle = null;
|
||||
}
|
||||
@@ -162,11 +158,20 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
|
||||
var pos = pagePanel.GetScrollPosition();
|
||||
|
||||
var factor = pagePanel.ZoomFactor * _viewRenderFactor;
|
||||
factor = Math.Max(factor, MinZoomFactor);
|
||||
factor = Math.Min(factor, MaxZoomFactor);
|
||||
pagePanel.MinZoomFactor = MinZoomFactor / factor;
|
||||
pagePanel.MaxZoomFactor = MaxZoomFactor / factor;
|
||||
double factor;
|
||||
if (pagePanel.ZoomToFit)
|
||||
{
|
||||
factor = Math.Min(pagePanel.ActualHeight / PdfHandle.Pages[CurrentPage].Height,
|
||||
pagePanel.ActualWidth / PdfHandle.Pages[CurrentPage].Width);
|
||||
}
|
||||
else
|
||||
{
|
||||
factor = pagePanel.ZoomFactor * _viewRenderFactor;
|
||||
factor = Math.Max(factor, MinZoomFactor);
|
||||
factor = Math.Min(factor, MaxZoomFactor);
|
||||
pagePanel.MinZoomFactor = MinZoomFactor / factor;
|
||||
pagePanel.MaxZoomFactor = MaxZoomFactor / factor;
|
||||
}
|
||||
|
||||
var image = PdfHandle.Pages[CurrentPage].Render(factor);
|
||||
|
||||
@@ -242,6 +247,8 @@ namespace QuickLook.Plugin.PDFViewer
|
||||
|
||||
Dispatcher.BeginInvoke(new Action(() => PageThumbnails.Add(bs)));
|
||||
});
|
||||
|
||||
handle.Close();
|
||||
}
|
||||
}).Start();
|
||||
}
|
||||
|
Reference in New Issue
Block a user