fix Pdf zoom-to-fit issue when switching pages

This commit is contained in:
Paddy Xu
2017-12-22 10:52:37 +02:00
parent fe39854b57
commit abc80e046d
3 changed files with 20 additions and 13 deletions

View File

@@ -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,

View File

@@ -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();
}