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