diff --git a/Elwig/Documents/Document.cs b/Elwig/Documents/Document.cs index cd87083..4a77a55 100644 --- a/Elwig/Documents/Document.cs +++ b/Elwig/Documents/Document.cs @@ -153,7 +153,7 @@ namespace Elwig.Documents { public async Task Print(int copies = 1) { if (PdfPath == null) throw new InvalidOperationException("Pdf file has not been generated yet"); - await Pdf.Print(PdfPath, copies); + await Pdf.Print(PdfPath, copies, DoublePaged); } public void Show() { diff --git a/Elwig/Elwig.csproj b/Elwig/Elwig.csproj index 4a9b61c..cc47a5d 100644 --- a/Elwig/Elwig.csproj +++ b/Elwig/Elwig.csproj @@ -34,6 +34,8 @@ + + diff --git a/Elwig/Helpers/Printing/Pdf.cs b/Elwig/Helpers/Printing/Pdf.cs index 13b52d6..6113107 100644 --- a/Elwig/Helpers/Printing/Pdf.cs +++ b/Elwig/Helpers/Printing/Pdf.cs @@ -8,15 +8,12 @@ using System.Windows; using System.Text.RegularExpressions; using System.Linq; using System.Net.Sockets; +using PdfiumViewer; +using System.Drawing.Printing; namespace Elwig.Helpers.Printing { public static class Pdf { - private static readonly string PdfToPrinter = new string[] { App.ExePath } - .Union(Environment.GetEnvironmentVariable("PATH")?.Split(';') ?? []) - .Select(x => Path.Combine(x, "PDFtoPrinter.exe")) - .Where(File.Exists) - .FirstOrDefault() ?? throw new FileNotFoundException("PDFtoPrinter executable not found"); private static readonly string WinziPrint = new string[] { App.ExePath } .Union(Environment.GetEnvironmentVariable("PATH")?.Split(';') ?? []) .Select(x => Path.Combine(x, "WinziPrint.exe")) @@ -91,21 +88,24 @@ namespace Elwig.Helpers.Printing { }); } - public static async Task Print(string path, int copies = 1) { + public static async Task Print(string path, int copies = 1, bool doublePaged = false) { + await Print(path, new() { + Copies = (short)copies, + Collate = true, + Duplex = doublePaged ? Duplex.Vertical : Duplex.Simplex, + }); + } + + public static Task Print(string path, PrinterSettings settings) { try { - var p = new Process() { StartInfo = new() { - FileName = PdfToPrinter, - CreateNoWindow = true, - UseShellExecute = false, - } }; - p.StartInfo.ArgumentList.Add(path); - p.StartInfo.ArgumentList.Add("/s"); - p.StartInfo.ArgumentList.Add($"copies={copies}"); - p.Start(); - await p.WaitForExitAsync(); + using var doc = PdfDocument.Load(path); + using var printDoc = doc.CreatePrintDocument(PdfPrintMode.CutMargin); + printDoc.PrinterSettings = settings; + printDoc.Print(); } catch (Exception e) { MessageBox.Show("Beim Drucken ist ein Fehler aufgetreten:\n\n" + e.Message, "Fehler beim Drucken", MessageBoxButton.OK, MessageBoxImage.Error); } + return Task.CompletedTask; } } } diff --git a/Elwig/Windows/MailWindow.xaml.cs b/Elwig/Windows/MailWindow.xaml.cs index bda5eb7..a2547a4 100644 --- a/Elwig/Windows/MailWindow.xaml.cs +++ b/Elwig/Windows/MailWindow.xaml.cs @@ -706,8 +706,7 @@ namespace Elwig.Windows { private async void PrintButton_Click(object sender, RoutedEventArgs evt) { if (PrintDocument == null) return; PrintButton.IsEnabled = false; - var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?\n" + - $"Sind die \"Duplex-Einstellungen\" des Standarddruckers entsprechend eingestellt (doppelseitig bzw. einseitig)?", + var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?", "Rundschreiben drucken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No); if (res == MessageBoxResult.Yes) { Mouse.OverrideCursor = Cursors.AppStarting; diff --git a/Elwig/fetch-resources.bat b/Elwig/fetch-resources.bat index 9bd1737..7f3f340 100644 --- a/Elwig/fetch-resources.bat +++ b/Elwig/fetch-resources.bat @@ -1,5 +1,4 @@ ::mkdir "C:\Program Files\Elwig" -::curl --fail -s -L "https://github.com/emendelson/pdftoprinter/raw/main/PDFtoPrinter.exe" -z "C:\Program Files\Elwig\PDFtoPrinter.exe" -o "C:\Program Files\Elwig\PDFtoPrinter.exe" mkdir "C:\ProgramData\Elwig\resources" copy /b /y Documents\*.css "C:\ProgramData\Elwig\resources" copy /b /y Documents\*.cshtml "C:\ProgramData\Elwig\resources" diff --git a/Installer/Installer.wixproj b/Installer/Installer.wixproj index a024408..b1fffb7 100644 --- a/Installer/Installer.wixproj +++ b/Installer/Installer.wixproj @@ -25,7 +25,6 @@ - @@ -36,7 +35,6 @@ - \ No newline at end of file diff --git a/Installer/MainComponents.wxs b/Installer/MainComponents.wxs index cdd66a7..8322ba4 100644 --- a/Installer/MainComponents.wxs +++ b/Installer/MainComponents.wxs @@ -10,9 +10,6 @@ - - -