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 System.Linq;
|
||||||
using CliWrap;
|
using CliWrap;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
|
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")
|
var result = Cli.Wrap("/usr/bin/soffice")
|
||||||
.WithArguments($"--headless --convert-to pdf {inputFileName} --outdir {outFileName}");
|
.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)
|
foreach (var file in filesNames)
|
||||||
{
|
{
|
||||||
@ -52,7 +53,6 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
|
|||||||
{
|
{
|
||||||
throw new FileFormatException($"Файл с именем: {file} - неподдерживаемого формата. Он не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения.");
|
throw new FileFormatException($"Файл с именем: {file} - неподдерживаемого формата. Он не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения.");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var listFileNames = filesNames
|
var listFileNames = filesNames
|
||||||
@ -64,8 +64,12 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
|
|||||||
.ToList();
|
.ToList();
|
||||||
foreach (var fileName in listFileNames)
|
foreach (var fileName in listFileNames)
|
||||||
{
|
{
|
||||||
if (!fileName.inputFile.ToLower().EndsWith(".pdf"))
|
var fileExt = Path.GetExtension(fileName.inputFile);
|
||||||
await StartConvertProcessAsync(fileName.inputFile, fileName.convertedFile);
|
if (fileExt != ".pdf")
|
||||||
|
{
|
||||||
|
//FileInfo fileInfo = new FileInfo(fileName.inputFile);
|
||||||
|
await StartConvertProcessAsync(fileName.inputFile, fileName.convertedFile, token);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
DoMergedAsync(listFileNames.Select(c => c.convertedFile), resultPath);
|
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 context = serviceProvider.GetRequiredService<IAsbCloudDbContext>();
|
||||||
var fileService = serviceProvider.GetRequiredService<FileService>();
|
var fileService = serviceProvider.GetRequiredService<FileService>();
|
||||||
var files = state.Parts.Select(p => fileService.GetUrl(p.File));
|
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);
|
await fileService.MoveAsync(idWell, null, idFileCategoryDrillingProgram, resultFileName, tempResultFilePath, token);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@ namespace ConsoleApp1
|
|||||||
.Distinct()
|
.Distinct()
|
||||||
.Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe)))
|
.Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe)))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
FileInfo fileInfo = new FileInfo(resultFile);
|
||||||
|
|
||||||
matchesExtensions(inputFiles);
|
matchesExtensions(inputFiles);
|
||||||
foreach (var FileName in inputFiles)
|
foreach (var FileName in inputFiles)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user