added light console app for test "OS detection"

This commit is contained in:
eugeniy_ivanov 2023-01-27 18:16:25 +05:00
parent 46074b6bd1
commit dd0e49be0a
2 changed files with 88 additions and 36 deletions

View File

@ -13,49 +13,62 @@ namespace ConsoleApp1
{
static void Main(/*string[] args*/)
{
string[] fileExtension = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" };
Console.WriteLine($"start convert");
var inputFiles = new List<string>();
var resultFile = "C:\\Test\\result.pdf";
inputFiles.Add("11112222.docx");
inputFiles.Add("11117777.pdf");
inputFiles.Add("22223333.xls");
inputFiles.Add("33334444.xlsx");
//inputFiles.Add("33334444.tts");
// string[] fileExtension = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" };
// Console.WriteLine($"start convert");
// var inputFiles = new List<string>();
// var resultFile = "C:\\Test\\result.pdf";
// inputFiles.Add("11112222.docx");
// inputFiles.Add("11117777.pdf");
// inputFiles.Add("22223333.xls");
// inputFiles.Add("33334444.xlsx");
// //inputFiles.Add("33334444.tts");
var listOutNames = new List<string>();
var filteredFilesNames = inputFiles
.Distinct()
.Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe)))
.ToList();
FileInfo fileInfo = new FileInfo(resultFile);
// var listOutNames = new List<string>();
// var filteredFilesNames = inputFiles
// .Distinct()
// .Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe)))
// .ToList();
// FileInfo fileInfo = new FileInfo(resultFile);
//matchesExtensions(inputFiles);
foreach (var FileName in inputFiles)
// //matchesExtensions(inputFiles);
// foreach (var FileName in inputFiles)
// {
// var outputFile = Path.ChangeExtension(FileName, ".pdf");
// var outFile = StartConvertProcessAsync(FileName, outputFile);
// Console.WriteLine($"convert file - {FileName}");
// Console.ReadLine();
// listOutNames.Add(outFile.Result.ToString());
// }
// Console.WriteLine("merged files");
// Console.ReadLine();
// DoMerged(listOutNames, resultFile);
//static void matchesExtensions(List<string> inputFiles)
// {
// string[] fileExtension = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" };
// foreach (var file in inputFiles)
// {
// var fileExt = Path.GetExtension(file);
// if (fileExtension.All(fe => fileExt != fe))
// {
// throw new FileFormatException($"Файл с именем: {file} не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения. Не поддерживаемый формат файла");
// }
// }
// }
if (OperatingSystem.IsWindows())
{
var outputFile = Path.ChangeExtension(FileName, ".pdf");
var outFile = StartConvertProcessAsync(FileName, outputFile);
Console.WriteLine($"convert file - {FileName}");
Console.WriteLine("win");
Console.ReadLine();
listOutNames.Add(outFile.Result.ToString());
}
Console.WriteLine("merged files");
Console.ReadLine();
DoMerged(listOutNames, resultFile);
static void matchesExtensions(List<string> inputFiles)
if (OperatingSystem.IsLinux())
{
string[] fileExtension = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" };
foreach (var file in inputFiles)
{
var fileExt = Path.GetExtension(file);
if (fileExtension.All(fe => fileExt != fe))
{
throw new FileFormatException($"Файл с именем: {file} не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения. Не поддерживаемый формат файла");
}
}
Console.WriteLine("linux");
Console.ReadLine();
}
}
public static void DoMerged(IEnumerable<string> inputFiles, string outFile)
@ -78,6 +91,25 @@ namespace ConsoleApp1
};
}
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("Вызов процесса в текущей операционной системе не возможен");
}
//public static void StartConvertProcess(string inputFileName, string outFileName)
//{
// using (Process pdfprocess = new Process())
@ -98,6 +130,9 @@ namespace ConsoleApp1
//}
private static async Task<string> StartConvertProcessAsync(string inputFileName, string outFileName)
{
var progrAndArg = getOptionsStartupProcess(inputFileName, outFileName);
//string outPath = "/home/eddie/Test/OutFiles";
string outPath = "C:\\Test\\OutFiles";
var result = Cli.Wrap("C:\\Program Files\\LibreOffice\\program\\soffice.exe")

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>C:\home\linux_test_test</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<SelfContained>true</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
<PublishTrimmed>false</PublishTrimmed>
</PropertyGroup>
</Project>