Documents/Pdf: allow double-sided pages to be printed

This commit is contained in:
2023-10-23 22:25:32 +02:00
parent d5102c9cd7
commit 8792404e0d
6 changed files with 48 additions and 14 deletions

View File

@ -21,25 +21,30 @@ namespace Elwig.Documents {
public static async Task Init(Action evtHandler) {
var p = new Process() { StartInfo = new() {
FileName = WinziPrint,
Arguments = $"-p -e utf-8 -d \"{App.TempPath}\" -",
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardOutput = true
} };
p.StartInfo.ArgumentList.Add("-p");
p.StartInfo.ArgumentList.Add("-e");
p.StartInfo.ArgumentList.Add("utf-8");
p.StartInfo.ArgumentList.Add("-d");
p.StartInfo.ArgumentList.Add(App.TempPath);
p.StartInfo.ArgumentList.Add("-");
p.Start();
WinziPrintProc = p;
evtHandler();
}
public static async Task<IEnumerable<int>> Convert(string htmlPath, string pdfPath, IProgress<double>? progress = null) {
return await Convert(new string[] { htmlPath }, pdfPath, progress);
public static async Task<IEnumerable<int>> Convert(string htmlPath, string pdfPath, bool doubleSided = false, IProgress<double>? progress = null) {
return await Convert(new string[] { htmlPath }, pdfPath, doubleSided, progress);
}
public static async Task<IEnumerable<int>> Convert(IEnumerable<string> htmlPath, string pdfPath, IProgress<double>? progress = null) {
public static async Task<IEnumerable<int>> Convert(IEnumerable<string> htmlPath, string pdfPath, bool doubleSided = false, IProgress<double>? progress = null) {
if (WinziPrintProc == null) throw new InvalidOperationException("The WinziPrint process has not been initialized yet");
progress?.Report(0.0);
await WinziPrintProc.StandardInput.WriteLineAsync($"{string.Join(';', htmlPath)};{pdfPath}");
await WinziPrintProc.StandardInput.WriteLineAsync((doubleSided ? "-2;" : "") + $"{string.Join(';', htmlPath)};{pdfPath}");
while (true) {
var line = await WinziPrintProc.StandardOutput.ReadLineAsync() ?? throw new IOException("Invalid response from WinziPrint");
if (line.StartsWith("error:")) {