Printing/Pdf: Update WinziPrint version to 0.2.3
This commit is contained in:
@ -109,7 +109,7 @@ namespace Elwig.Documents {
|
|||||||
var tmpHtml = new TempFile("html");
|
var tmpHtml = new TempFile("html");
|
||||||
await File.WriteAllTextAsync(tmpHtml.FilePath, await doc.Render(), Utils.UTF8);
|
await File.WriteAllTextAsync(tmpHtml.FilePath, await doc.Render(), Utils.UTF8);
|
||||||
tmpHtmls.Add(tmpHtml);
|
tmpHtmls.Add(tmpHtml);
|
||||||
tmpFiles.Add(tmpHtml.FileName);
|
tmpFiles.Add((doc is Letterhead ? "#" : "") + tmpHtml.FileName);
|
||||||
i++;
|
i++;
|
||||||
progress?.Report(GenerationProportion * 100 * i / n);
|
progress?.Report(GenerationProportion * 100 * i / n);
|
||||||
}
|
}
|
||||||
|
@ -54,14 +54,13 @@ namespace Elwig.Helpers.Printing {
|
|||||||
while (true) {
|
while (true) {
|
||||||
var line = await WinziPrintProc.StandardOutput.ReadLineAsync() ?? throw new IOException("Invalid response from WinziPrint");
|
var line = await WinziPrintProc.StandardOutput.ReadLineAsync() ?? throw new IOException("Invalid response from WinziPrint");
|
||||||
if (line.StartsWith("error:")) {
|
if (line.StartsWith("error:")) {
|
||||||
MessageBox.Show(line[6..].Trim(), "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
throw new IOException($"WinziPrint: {line[6..].Trim()}");
|
||||||
return Array.Empty<int>();
|
|
||||||
} else if (line.StartsWith("progress:")) {
|
} else if (line.StartsWith("progress:")) {
|
||||||
var parts = line[9..].Trim().Split('/').Select(int.Parse).ToArray();
|
var parts = line[9..].Trim().Split('/').Select(int.Parse).ToArray();
|
||||||
progress?.Report(100.0 * parts[0] / parts[1]);
|
progress?.Report(100.0 * parts[0] / parts[1]);
|
||||||
} else if (line.StartsWith("success:")) {
|
} else if (line.StartsWith("success:")) {
|
||||||
var m = Regex.Match(line, @"\(([0-9, ]+)\)");
|
var m = Regex.Match(line, @"\(([0-9, ]+)\)");
|
||||||
return m.Groups[1].Value.Split(", ").Select(int.Parse);
|
return m.Groups[1].Value.Split(", ").Select(int.Parse).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,19 +126,27 @@ namespace Elwig.Windows {
|
|||||||
private async void Menu_Print_ShowDeliveryNote_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_ShowDeliveryNote_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (DeliveryList.SelectedItem is not Delivery d) return;
|
if (DeliveryList.SelectedItem is not Delivery d) return;
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
using var doc = new DeliveryNote(d, Context);
|
try {
|
||||||
await doc.Generate();
|
using var doc = new DeliveryNote(d, Context);
|
||||||
|
await doc.Generate();
|
||||||
|
doc.Show();
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
doc.Show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Print_PrintDeliveryNote_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_PrintDeliveryNote_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (DeliveryList.SelectedItem is not Delivery d) return;
|
if (DeliveryList.SelectedItem is not Delivery d) return;
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
using var doc = new DeliveryNote(d, Context);
|
try {
|
||||||
await doc.Generate();
|
using var doc = new DeliveryNote(d, Context);
|
||||||
|
await doc.Generate();
|
||||||
|
await doc.Print();
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
await doc.Print();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Export_Bki_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Export_Bki_Click(object sender, RoutedEventArgs evt) {
|
||||||
@ -160,36 +168,52 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private async void Menu_Print_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
try {
|
||||||
await doc.Generate();
|
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
||||||
|
await doc.Generate();
|
||||||
|
doc.Show();
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
doc.Show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Print_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
try {
|
||||||
await doc.Generate();
|
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
||||||
|
await doc.Generate();
|
||||||
|
await doc.Print();
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
await doc.Print();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Print_DeliveryJournal_ShowFilter_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_DeliveryJournal_ShowFilter_Click(object sender, RoutedEventArgs evt) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
var (f, _, d, _, _) = await GetFilters();
|
try {
|
||||||
var doc = new DeliveryJournal(string.Join(" / ", f), d);
|
var (f, _, d, _, _) = await GetFilters();
|
||||||
await doc.Generate();
|
var doc = new DeliveryJournal(string.Join(" / ", f), d);
|
||||||
|
await doc.Generate();
|
||||||
|
doc.Show();
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
doc.Show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Print_DeliveryJournal_PrintFilter_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_DeliveryJournal_PrintFilter_Click(object sender, RoutedEventArgs evt) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
var (f, _, d, _, _) = await GetFilters();
|
try {
|
||||||
var doc = new DeliveryJournal(string.Join(" / ", f), d);
|
var (f, _, d, _, _) = await GetFilters();
|
||||||
await doc.Generate();
|
var doc = new DeliveryJournal(string.Join(" / ", f), d);
|
||||||
|
await doc.Generate();
|
||||||
|
doc.Show();
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
doc.Show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Menu_Settings_EnableFreeEditing_Checked(object sender, RoutedEventArgs evt) {
|
private void Menu_Settings_EnableFreeEditing_Checked(object sender, RoutedEventArgs evt) {
|
||||||
@ -1153,14 +1177,18 @@ namespace Elwig.Windows {
|
|||||||
await RefreshDeliveryParts();
|
await RefreshDeliveryParts();
|
||||||
if (p?.Delivery != null) {
|
if (p?.Delivery != null) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
using var doc = new DeliveryNote(p.Delivery, Context);
|
try {
|
||||||
await doc.Generate();
|
using var doc = new DeliveryNote(p.Delivery, Context);
|
||||||
Mouse.OverrideCursor = null;
|
await doc.Generate();
|
||||||
if (App.Config.Debug) {
|
if (App.Config.Debug) {
|
||||||
doc.Show();
|
doc.Show();
|
||||||
} else {
|
} else {
|
||||||
await doc.Print(2);
|
await doc.Print(2);
|
||||||
|
}
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
FinishButton.Cursor = null;
|
FinishButton.Cursor = null;
|
||||||
DeliveryList.SelectedItem = null;
|
DeliveryList.SelectedItem = null;
|
||||||
|
@ -487,12 +487,17 @@ namespace Elwig.Windows {
|
|||||||
return docs;
|
return docs;
|
||||||
});
|
});
|
||||||
var emailRecipients = email.Select(d => d.Key.MgNr).ToHashSet();
|
var emailRecipients = email.Select(d => d.Key.MgNr).ToHashSet();
|
||||||
foreach (var item1 in email.Select((e, i) => new { Index = i, e.Key, e.Value })) {
|
try {
|
||||||
foreach (var item2 in item1.Value.Select((d, i) => new { Index = i, Doc = d})) {
|
foreach (var item1 in email.Select((e, i) => new { Index = i, e.Key, e.Value })) {
|
||||||
await item2.Doc.Generate(new Progress<double>(v => {
|
foreach (var item2 in item1.Value.Select((d, i) => new { Index = i, Doc = d })) {
|
||||||
ProgressBar.Value = v * (item2.Index + 1) / item1.Value.Count / totalNum + 100.0 * item1.Index / totalNum;
|
await item2.Doc.Generate(new Progress<double>(v => {
|
||||||
}));
|
ProgressBar.Value = v * (item2.Index + 1) / item1.Value.Count / totalNum + 100.0 * item1.Index / totalNum;
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (email.Count > 0) {
|
if (email.Count > 0) {
|
||||||
EmailDocuments = email;
|
EmailDocuments = email;
|
||||||
@ -516,12 +521,17 @@ namespace Elwig.Windows {
|
|||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
if (printDocs.Count > 0) {
|
if (printDocs.Count > 0) {
|
||||||
var print = Document.Merge(printDocs);
|
try {
|
||||||
print.DoubleSided = doublePaged;
|
var print = Document.Merge(printDocs);
|
||||||
await print.Generate(new Progress<double>(v => {
|
print.DoubleSided = doublePaged;
|
||||||
ProgressBar.Value = 100.0 * emailNum / totalNum + v * printNum / totalNum;
|
await print.Generate(new Progress<double>(v => {
|
||||||
}));
|
ProgressBar.Value = 100.0 * emailNum / totalNum + v * printNum / totalNum;
|
||||||
PrintDocument = print;
|
}));
|
||||||
|
PrintDocument = print;
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ProgressBar.Value = 100.0;
|
ProgressBar.Value = 100.0;
|
||||||
|
|
||||||
|
@ -432,14 +432,18 @@ namespace Elwig.Windows {
|
|||||||
if (MemberList.SelectedItem is not Member m)
|
if (MemberList.SelectedItem is not Member m)
|
||||||
return;
|
return;
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
using var doc = new Letterhead(m);
|
try {
|
||||||
await doc.Generate();
|
using var doc = new Letterhead(m);
|
||||||
Mouse.OverrideCursor = null;
|
await doc.Generate();
|
||||||
if (App.Config.Debug) {
|
if (App.Config.Debug) {
|
||||||
doc.Show();
|
doc.Show();
|
||||||
} else {
|
} else {
|
||||||
await doc.Print();
|
await doc.Print();
|
||||||
|
}
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task PrintLetterheads(int ordering) {
|
private async Task PrintLetterheads(int ordering) {
|
||||||
@ -468,14 +472,18 @@ namespace Elwig.Windows {
|
|||||||
.ThenBy(m => m.MgNr);
|
.ThenBy(m => m.MgNr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
using var doc = Document.Merge((await members.ToListAsync()).Select(m => new Letterhead(m)));
|
try {
|
||||||
await doc.Generate();
|
using var doc = Document.Merge((await members.ToListAsync()).Select(m => new Letterhead(m)));
|
||||||
Mouse.OverrideCursor = null;
|
await doc.Generate();
|
||||||
if (App.Config.Debug) {
|
if (App.Config.Debug) {
|
||||||
doc.Show();
|
doc.Show();
|
||||||
} else {
|
} else {
|
||||||
await doc.Print();
|
await doc.Print();
|
||||||
|
}
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Print_Letterheads_MgNr_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_Letterheads_MgNr_Click(object sender, RoutedEventArgs evt) {
|
||||||
@ -494,24 +502,32 @@ namespace Elwig.Windows {
|
|||||||
if (MemberList.SelectedItem is not Member m)
|
if (MemberList.SelectedItem is not Member m)
|
||||||
return;
|
return;
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
using var doc = new MemberDataSheet(m, Context);
|
try {
|
||||||
await doc.Generate();
|
using var doc = new MemberDataSheet(m, Context);
|
||||||
Mouse.OverrideCursor = null;
|
await doc.Generate();
|
||||||
if (App.Config.Debug) {
|
if (App.Config.Debug) {
|
||||||
doc.Show();
|
doc.Show();
|
||||||
} else {
|
} else {
|
||||||
await doc.Print();
|
await doc.Print();
|
||||||
|
}
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Show_MemberDataSheet_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Show_MemberDataSheet_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (MemberList.SelectedItem is not Member m)
|
if (MemberList.SelectedItem is not Member m)
|
||||||
return;
|
return;
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
using var doc = new MemberDataSheet(m, Context);
|
try {
|
||||||
await doc.Generate();
|
using var doc = new MemberDataSheet(m, Context);
|
||||||
|
await doc.Generate();
|
||||||
|
doc.Show();
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
doc.Show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FocusSearchInput(object sender, RoutedEventArgs evt) {
|
private void FocusSearchInput(object sender, RoutedEventArgs evt) {
|
||||||
|
Binary file not shown.
Reference in New Issue
Block a user