diff --git a/QuestPDF.Previewer.Examples/Program.cs b/QuestPDF.Previewer.Examples/Program.cs index 7e218a8..8a42c86 100644 --- a/QuestPDF.Previewer.Examples/Program.cs +++ b/QuestPDF.Previewer.Examples/Program.cs @@ -11,6 +11,8 @@ var model = DataSource.GetReport(); var report = new StandardReport(model); report.ShowInPreviewer(); +return; + Document .Create(container => { diff --git a/QuestPDF.Previewer/DocumentPreviewerExtensions.cs b/QuestPDF.Previewer/DocumentPreviewerExtensions.cs index 29f3f70..7bc9d21 100644 --- a/QuestPDF.Previewer/DocumentPreviewerExtensions.cs +++ b/QuestPDF.Previewer/DocumentPreviewerExtensions.cs @@ -18,16 +18,18 @@ namespace QuestPDF.Previewer { ArgumentNullException.ThrowIfNull(document); - //Currently there is no way to unitialize a previously run avalonia app. - //So we need to check if the previewer was already run and show the window again. + // currently there is no way to utilize a previously run Avalonia app. + // so we need to check if the previewer was already run and show the window again. if(Application.Current?.ApplicationLifetime is ClassicDesktopStyleApplicationLifetime desktop) { desktop.MainWindow = new PreviewerWindow() { Document = document, }; + desktop.MainWindow.Show(); desktop.Start(Array.Empty()); + return; } diff --git a/QuestPDF.Previewer/PreviewerControl.cs b/QuestPDF.Previewer/PreviewerControl.cs index 8eb05a3..4af78ca 100644 --- a/QuestPDF.Previewer/PreviewerControl.cs +++ b/QuestPDF.Previewer/PreviewerControl.cs @@ -39,8 +39,6 @@ namespace QuestPDF.Previewer public PreviewerControl() { - ScrollViewportSize = 0.5f; - PagesProperty.Changed.Subscribe(p => { InteractiveCanvas.Pages = Pages; diff --git a/QuestPDF.Previewer/PreviewerUtils.cs b/QuestPDF.Previewer/PreviewerUtils.cs deleted file mode 100644 index a63c077..0000000 --- a/QuestPDF.Previewer/PreviewerUtils.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Diagnostics; -using Avalonia.Controls; -using QuestPDF.Fluent; -using QuestPDF.Infrastructure; - -namespace QuestPDF.Previewer -{ - static class PreviewerUtils - { - public static async Task SavePdfWithDialog(IDocument? document, Window dialogOwner) - { - if (document == null) - return false; - - var dialog = new SaveFileDialog() - { - DefaultExtension = ".pdf", - InitialFileName = document.GetMetadata().Title ?? "Document", - Filters = new List() - { - new FileDialogFilter() - { - Extensions = new List() { "pdf" }, - } - } - }; - - var filePath = await dialog.ShowAsync(dialogOwner); - if (string.IsNullOrWhiteSpace(filePath)) - return false; - - var dirPath = Path.GetDirectoryName(filePath); - - if (!Directory.Exists(dirPath)) - return false; - - //TODO Catch layout exceptions. - document.GeneratePdf(filePath); - Process.Start("explorer.exe", filePath); - return true; - } - } -} diff --git a/QuestPDF.Previewer/PreviewerWindow.axaml b/QuestPDF.Previewer/PreviewerWindow.axaml index 50daf0e..ec43160 100644 --- a/QuestPDF.Previewer/PreviewerWindow.axaml +++ b/QuestPDF.Previewer/PreviewerWindow.axaml @@ -37,6 +37,18 @@ ScrollViewportSize="{Binding #Window.ScrollViewportSize, Mode=OneWayToSource}" Pages="{Binding #Window.DocumentRenderer.Pages, Mode=OneWay}" /> + + ("GeneratePdf") - // .Click += (_, _) => _ = PreviewerUtils.SavePdfWithDialog(Document, this); - + DocumentProperty.Changed.Subscribe(v => Task.Run(() => DocumentRenderer.UpdateDocument(v.NewValue.Value))); HotReloadManager.UpdateApplicationRequested += InvalidatePreview; } @@ -85,5 +83,30 @@ namespace QuestPDF.Previewer { AvaloniaXamlLoader.Load(this); } + + private void ShowPDF(object? sender, RoutedEventArgs e) + { + var path = Path.GetTempPath() + ".pdf"; + + try + { + DocumentRenderer.Document?.GeneratePdf(path); + } + catch (Exception exception) + { + new ExceptionDocument(exception).GeneratePdf(path); + } + + var openBrowserProcess = new Process + { + StartInfo = new() + { + UseShellExecute = true, + FileName = path + } + }; + + openBrowserProcess.Start(); + } } } diff --git a/QuestPDF/Drawing/FontManager.cs b/QuestPDF/Drawing/FontManager.cs index 1b34d09..98688a4 100644 --- a/QuestPDF/Drawing/FontManager.cs +++ b/QuestPDF/Drawing/FontManager.cs @@ -52,7 +52,8 @@ namespace QuestPDF.Drawing { return new SKPaint { - Color = SKColor.Parse(color) + Color = SKColor.Parse(color), + IsAntialias = true }; } }