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);
        }
Exemplo n.º 3
0
        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();
            }
        }