public void View(string path, ContextObject context) { using (var officeApp = new OfficeInteropWrapper(path)) { _pdfPath = officeApp.SaveAsPdf(); } if (string.IsNullOrEmpty(_pdfPath)) { throw new Exception("COM failed."); } _pdfViewer = new PdfViewerControl(); _pdfViewer.Loaded += (sender, e) => { try { _pdfViewer.LoadPdf(_pdfPath); } catch (Exception ex) { throw ex; } context.Title = $"{Path.GetFileName(path)} (1 / {_pdfViewer.TotalPages})"; }; _pdfViewer.CurrentPageChanged += (sender, e) => context.Title = $"{Path.GetFileName(path)} ({_pdfViewer.CurrentPage + 1} / {_pdfViewer.TotalPages})"; context.ViewerContent = _pdfViewer; context.IsBusy = false; }
private static Control OpenPowerpoint(string path) { var ppt = Presentation.Open(path); ppt.ChartToImageConverter = new ChartToImageConverter(); var settings = new PresentationToPdfConverterSettings { OptimizeIdenticalImages = true, ShowHiddenSlides = true }; var pdf = PresentationToPdfConverter.Convert(ppt, settings); var viewer = new PdfViewerControl(); var tempPdf = new MemoryStream(); pdf.Save(tempPdf); pdf.Close(true); pdf.Dispose(); ppt.Close(); ppt.Dispose(); viewer.Dispatcher.BeginInvoke(new Action(() => { viewer.LoadPdf(tempPdf); tempPdf.Dispose(); }), DispatcherPriority.Loaded); return(viewer); }
public void View(string path, ContextObject context) { _pdfControl = new PdfViewerControl(); context.ViewerContent = _pdfControl; _buffer = GhostScriptWrapper.ConvertToPdf(path); if (_buffer == null || _buffer.Length == 0) { context.ViewerContent = new Label { Content = "Conversion to PDF failed." }; context.IsBusy = false; return; } Exception exception = null; _pdfControl.Dispatcher.BeginInvoke(new Action(() => { try { _pdfControl.LoadPdf(_buffer); context.Title = $"1 / {_pdfControl.TotalPages}: {Path.GetFileName(path)}"; _pdfControl.CurrentPageChanged += UpdateWindowCaption; context.IsBusy = false; } catch (Exception e) { exception = e; } }), DispatcherPriority.Loaded).Wait(); if (exception != null) { ExceptionDispatchInfo.Capture(exception).Throw(); } }