forked from ddrilling/AsbCloudServer
refact
This commit is contained in:
parent
22a662a1be
commit
e86e1bb854
@ -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<string> inputFiles, string outFile)
|
||||
private static void MergeFiles(IEnumerable<string> 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<string> 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
|
||||
}
|
||||
|
@ -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<string>();
|
||||
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<string> 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)
|
||||
|
Loading…
Reference in New Issue
Block a user