From e86e1bb8547b7f206fc65688ba5d2aaefd678604 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Wed, 18 Jan 2023 11:31:58 +0500 Subject: [PATCH] refact --- .../DrillingProgram/Convert/ConvertToPdf.cs | 56 +++++++++---------- ConsoleApp1/Program.cs | 36 ++++++------ 2 files changed, 41 insertions(+), 51 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs b/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs index f379160b..6454b560 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs @@ -9,35 +9,31 @@ using System.Threading; namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert { +#nullable enable internal class ConvertToPdf { private readonly string[] filesExtensions = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" }; - public static void MergeFiles(IEnumerable inputFiles, string outFile) + private static void MergeFiles(IEnumerable inputFiles, string outFile) { - using (FileStream stream = new FileStream(outFile, FileMode.Create)) - using (Document doc = new Document()) - using (PdfCopy pdf = new PdfCopy(doc, stream)) - { - doc.Open(); - PdfReader reader = null; - PdfImportedPage page = null; - inputFiles.ToList().ForEach(file => + using var stream = new FileStream(outFile, FileMode.Create); + using var doc = new Document(); + using var pdf = new PdfCopy(doc, stream); + doc.Open(); + var inputFilesList = inputFiles.ToList(); + foreach (var file in inputFilesList) + { + var reader = new PdfReader(file); + for (int i = 0; i < reader.NumberOfPages; i++) { - reader = new PdfReader(file); - for (int i = 0; i < reader.NumberOfPages; i++) - { - page = pdf.GetImportedPage(reader, i + 1); - pdf.AddPage(page); - } - pdf.FreeReader(reader); - reader.Close(); - File.Delete(file); - }); - } + pdf.AddPage(pdf.GetImportedPage(reader, i + 1)); + } + pdf.FreeReader(reader); + reader.Close(); + }; } - private async Task StartConvertProcessAsync(string inputFileName, string outFileName, CancellationToken token) + private static async Task StartConvertProcessAsync(string inputFileName, string outFileName, CancellationToken token) { var result = Cli.Wrap("/usr/bin/soffice") .WithArguments($"--headless --convert-to pdf {inputFileName} --outdir {outFileName}"); @@ -46,20 +42,17 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert public async Task GetConverteAndMergedFileAsync(IEnumerable filesNames, string resultPath, CancellationToken token) { - foreach (var file in filesNames) + var badFiles = filesNames.Where(f => !filesExtensions.Contains(Path.GetExtension(f))); + if (badFiles.Any()) { - var fileExt = Path.GetExtension(file); - if (!filesExtensions.Contains(fileExt)) - { - throw new FileFormatException($"Файл с именем: {file} - неподдерживаемого формата. Он не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения."); - } + throw new FileFormatException($"Файлы: {string.Join(", ", badFiles)} - неподдерживаемого формата. " + + $"Они не могут быть добавлены в список файлов для конвертации и слияния в общий файл программы бурения."); } - var listFileNames = filesNames .Distinct() - .Select(o => new { - inputFile = o, - convertedFile = Path.ChangeExtension(o, ".pdf") + .Select(f => new { + inputFile = f, + convertedFile = Path.ChangeExtension(f, ".pdf") }) .ToList(); foreach (var fileName in listFileNames) @@ -73,4 +66,5 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert MergeFiles(listFileNames.Select(c => c.convertedFile), resultPath); } } +#nullable disable } diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index 1a5fe613..69e9ae49 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -21,7 +21,7 @@ namespace ConsoleApp1 inputFiles.Add("11117777.pdf"); inputFiles.Add("22223333.xls"); inputFiles.Add("33334444.xlsx"); - inputFiles.Add("33334444.tts"); + //inputFiles.Add("33334444.tts"); var listOutNames = new List(); var filteredFilesNames = inputFiles @@ -30,7 +30,7 @@ namespace ConsoleApp1 .ToList(); FileInfo fileInfo = new FileInfo(resultFile); - matchesExtensions(inputFiles); + //matchesExtensions(inputFiles); foreach (var FileName in inputFiles) { var outputFile = Path.ChangeExtension(FileName, ".pdf"); @@ -60,26 +60,22 @@ namespace ConsoleApp1 public static void DoMerged(IEnumerable inputFiles, string outFile) { - using (FileStream stream = new FileStream(outFile, FileMode.Create)) - using (Document doc = new Document()) - using (PdfCopy pdf = new PdfCopy(doc, stream)) + using var stream = new FileStream(outFile, FileMode.Create); + using var doc = new Document(); + using var pdf = new PdfCopy(doc, stream); + doc.Open(); + var inputFilesList = inputFiles.ToList(); + foreach (var file in inputFilesList) { - doc.Open(); - PdfReader? reader = null; - PdfImportedPage? page = null; - inputFiles.ToList().ForEach(file => + var reader = new PdfReader(file); + for (int i = 0; i < reader.NumberOfPages; i++) { - reader = new PdfReader(file); - for (int i = 0; i < reader.NumberOfPages; i++) - { - page = pdf.GetImportedPage(reader, i + 1); - pdf.AddPage(page); - } - pdf.FreeReader(reader); - reader.Close(); - File.Delete(file); - }); - } + PdfImportedPage page = pdf.GetImportedPage(reader, i + 1); + pdf.AddPage(page); + } + pdf.FreeReader(reader); + reader.Close(); + }; } //public static void StartConvertProcess(string inputFileName, string outFileName)