forked from ddrilling/AsbCloudServer
refact GetConverteAndMergedFileAsync
This commit is contained in:
parent
1b834e7752
commit
3e128c5cba
@ -5,6 +5,7 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using CliWrap;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
|
||||
{
|
||||
@ -36,14 +37,14 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
|
||||
}
|
||||
}
|
||||
|
||||
private async Task StartConvertProcessAsync(string inputFileName, string outFileName)
|
||||
private async Task StartConvertProcessAsync(string inputFileName, string outFileName, CancellationToken token)
|
||||
{
|
||||
var result = Cli.Wrap("/usr/bin/soffice")
|
||||
.WithArguments($"--headless --convert-to pdf {inputFileName} --outdir {outFileName}");
|
||||
await result.ExecuteAsync();
|
||||
await result.ExecuteAsync(token);
|
||||
}
|
||||
|
||||
public async Task GetConverteAndMergedFileAsync(IEnumerable<string> filesNames, string resultPath)
|
||||
public async Task GetConverteAndMergedFileAsync(IEnumerable<string> filesNames, string resultPath, CancellationToken token)
|
||||
{
|
||||
foreach (var file in filesNames)
|
||||
{
|
||||
@ -52,7 +53,6 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
|
||||
{
|
||||
throw new FileFormatException($"Файл с именем: {file} - неподдерживаемого формата. Он не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var listFileNames = filesNames
|
||||
@ -64,8 +64,12 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
|
||||
.ToList();
|
||||
foreach (var fileName in listFileNames)
|
||||
{
|
||||
if (!fileName.inputFile.ToLower().EndsWith(".pdf"))
|
||||
await StartConvertProcessAsync(fileName.inputFile, fileName.convertedFile);
|
||||
var fileExt = Path.GetExtension(fileName.inputFile);
|
||||
if (fileExt != ".pdf")
|
||||
{
|
||||
//FileInfo fileInfo = new FileInfo(fileName.inputFile);
|
||||
await StartConvertProcessAsync(fileName.inputFile, fileName.convertedFile, token);
|
||||
}
|
||||
}
|
||||
DoMergedAsync(listFileNames.Select(c => c.convertedFile), resultPath);
|
||||
}
|
||||
|
@ -15,5 +15,11 @@ Windows - C:\Program Files\LibreOffice\program\soffice.exe
|
||||
с "ненужным" или "неправильным" форматом просто не будут попадать в список на преобразование.
|
||||
|
||||
|
||||
--список сигнатур файлов разных расширений
|
||||
1.xlsx
|
||||
(xlsDoc[0]==0x50) && (xlsDoc[1]==0x4B)
|
||||
2.docx
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -481,7 +481,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
||||
var context = serviceProvider.GetRequiredService<IAsbCloudDbContext>();
|
||||
var fileService = serviceProvider.GetRequiredService<FileService>();
|
||||
var files = state.Parts.Select(p => fileService.GetUrl(p.File));
|
||||
await converter.GetConverteAndMergedFileAsync(files, tempResultFilePath);
|
||||
await converter.GetConverteAndMergedFileAsync(files, tempResultFilePath, token);
|
||||
await fileService.MoveAsync(idWell, null, idFileCategoryDrillingProgram, resultFileName, tempResultFilePath, token);
|
||||
};
|
||||
|
||||
|
@ -28,6 +28,8 @@ namespace ConsoleApp1
|
||||
.Distinct()
|
||||
.Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe)))
|
||||
.ToList();
|
||||
FileInfo fileInfo = new FileInfo(resultFile);
|
||||
|
||||
matchesExtensions(inputFiles);
|
||||
foreach (var FileName in inputFiles)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user