@@ -1,11 +1,18 @@
|
||||
using System.Diagnostics;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using RestSharp;
|
||||
using SharpCompress.Common;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace IRaCIS.Core.Application.Helper;
|
||||
|
||||
public class FileConvertHelper
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 镜像里面打入libreoffice 的方案
|
||||
/// </summary>
|
||||
/// <param name="inputWordFilePath"></param>
|
||||
/// <param name="outputPdfDir"></param>
|
||||
static public void ConvertWordToPdf(string inputWordFilePath, string outputPdfDir)
|
||||
{
|
||||
// 设置 libreoffice 命令行参数
|
||||
@@ -30,4 +37,88 @@ public class FileConvertHelper
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 返回文件字节数组
|
||||
/// File.WriteAllBytes(outputFilePath, response.RawBytes); 直接将字节数组写入到本地某个路径
|
||||
/// var stream = new MemoryStream(response.RawBytes); 直接变为内存流,给其他程序用也可以
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
static public async Task<byte[]> ThirdStirling_PDFWordToPdfAsync(string filePath)
|
||||
{
|
||||
|
||||
var apiUrl = GetApiUrl();
|
||||
|
||||
var client = new RestClient(apiUrl);
|
||||
|
||||
var request = new RestRequest(apiUrl, Method.Post);
|
||||
|
||||
request.AddHeader("accept", "*/*");
|
||||
|
||||
// 直接上传文件,无需生成字节数组
|
||||
request.AddFile("fileInput", filePath);
|
||||
|
||||
return await GetPDFByteArrayAsync(client, request);
|
||||
}
|
||||
|
||||
static public async Task<byte[]> ThirdStirling_PDFWordToPdfAsync(byte[] fileBytes, string fileName)
|
||||
{
|
||||
|
||||
var apiUrl = GetApiUrl();
|
||||
var client = new RestClient(apiUrl);
|
||||
|
||||
var request = new RestRequest(apiUrl, Method.Post);
|
||||
|
||||
request.AddHeader("accept", "*/*");
|
||||
|
||||
// 添加文件流到请求
|
||||
request.AddFile("fileInput", fileBytes, fileName);
|
||||
|
||||
return await GetPDFByteArrayAsync(client, request);
|
||||
}
|
||||
|
||||
static private async Task<byte[]> GetPDFByteArrayAsync(RestClient client, RestRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
|
||||
// 发送请求并获取响应
|
||||
var response = await client.ExecuteAsync(request);
|
||||
|
||||
// 检查请求是否成功
|
||||
if (response.IsSuccessful)
|
||||
{
|
||||
return response.RawBytes ?? new byte[] { };
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"上传失败,错误代码: {response.StatusCode}, 错误消息: {response.ErrorMessage}");
|
||||
|
||||
return Array.Empty<byte>();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("发生异常: " + ex.Message);
|
||||
|
||||
return Array.Empty<byte>();
|
||||
}
|
||||
}
|
||||
|
||||
static private string GetApiUrl()
|
||||
{
|
||||
|
||||
var enviromentName = Environment.GetEnvironmentVariables()["ASPNETCORE_ENVIRONMENT"]?.ToString();
|
||||
|
||||
var configuration = new ConfigurationBuilder().AddJsonFile($"appsettings.{enviromentName}.json", false, false).Build();
|
||||
|
||||
// 手动绑定配置
|
||||
var appSettings = new ServiceVerifyConfigOption();
|
||||
configuration.GetSection("BasicSystemConfig").Bind(appSettings);
|
||||
|
||||
return appSettings.ThirdPdfUrl;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user