diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs b/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs index b2043a10..baf40eab 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs @@ -6,6 +6,7 @@ using System.Linq; using CliWrap; using System.Threading.Tasks; using System.Threading; +using System; namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert { @@ -33,10 +34,30 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert }; } + private static (string programFile, string programArg) getOptionsStartupProcess (string inputFileName, string resultFileDir) + { + (string programFile, string programArg) startupOptions; + if (OperatingSystem.IsWindows()) + { + startupOptions.programFile = "C:\\Program Files\\LibreOffice\\program\\soffice.exe"; + startupOptions.programArg = $"-headless -convert-to pdf {inputFileName} --outdir {resultFileDir}"; + return startupOptions; + } + if(OperatingSystem.IsLinux()) + { + startupOptions.programFile = "/usr/bin/soffice"; + startupOptions.programArg = $"--headless --convert-to pdf {inputFileName} --outdir {resultFileDir}"; + return (startupOptions); + } + + throw new NotSupportedException ("Вызов процесса в текущей операционной системе не возможен"); + } + private static async Task StartConvertProcessAsync(string inputFileName, string resultFileDir, CancellationToken token) { - var command = Cli.Wrap("/usr/bin/soffice") - .WithArguments($"--headless --convert-to pdf {inputFileName} --outdir {resultFileDir}"); + var startupOptions = getOptionsStartupProcess(inputFileName, resultFileDir); + var command = Cli.Wrap(startupOptions.programFile) + .WithArguments(startupOptions.programArg); await command.ExecuteAsync(token); }