|
@@ -27,24 +27,24 @@ namespace PDF_Office.Helper
|
|
|
public static CPDFConverterImg imgConverter = null;
|
|
|
public static CPDFConverterRTF rtfConverter = null;
|
|
|
public static CPDFConverterHTML htmlConverter = null;
|
|
|
- public static async Task<bool> WordConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertWordOptions wordOptions = null)
|
|
|
+ public static async Task<bool> WordConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertWordOptions wordOptions = null, bool IsCustomFileName = true)
|
|
|
{
|
|
|
bool result = false;
|
|
|
try
|
|
|
{
|
|
|
int[] pageArray = pageIndexLists.ToArray();
|
|
|
wordConverter = new CPDFConverterWord(inputpath, pawssword);
|
|
|
- string outputFolder = outputpath;
|
|
|
- string outputFileName = Path.GetFileNameWithoutExtension(inputpath);
|
|
|
+ string outputFolder = outputpath.Remove(outputpath.LastIndexOf("\\"));
|
|
|
+ string outputFileName = Path.GetFileNameWithoutExtension(outputpath);
|
|
|
ConvertError error = ConvertError.ERR_UNKNOWN;
|
|
|
string filename = GetFileNameAddSuffix(outputFolder, outputFileName, ".docx");
|
|
|
result = await Task.Run(() => wordConverter.Convert(outputFolder, ref outputFileName, wordOptions, pageArray, ref error, getProgress));
|
|
|
if (result)
|
|
|
{
|
|
|
- CommonHelper.ShowFileBrowser(outputFileName.Replace("/","\\"));
|
|
|
+ CommonHelper.ShowFileBrowser(outputFileName.Replace("/", "\\"));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
|
|
@@ -52,7 +52,7 @@ namespace PDF_Office.Helper
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public static async Task<bool> PPTConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertPPTOptions pptOptions=null)
|
|
|
+ public static async Task<bool> PPTConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertPPTOptions pptOptions = null, bool IsCustomFileName = true)
|
|
|
{
|
|
|
bool result = false;
|
|
|
try
|
|
@@ -60,13 +60,13 @@ namespace PDF_Office.Helper
|
|
|
int[] pageArray = pageIndexLists.ToArray();
|
|
|
|
|
|
pptConverter = new CPDFConverterPPT(inputpath, pawssword);
|
|
|
- string outputFolder = outputpath;
|
|
|
- string outputFileName = Path.GetFileNameWithoutExtension(inputpath);
|
|
|
+ string outputFolder = outputpath.Remove(outputpath.LastIndexOf("\\"));
|
|
|
+ string outputFileName = Path.GetFileNameWithoutExtension(outputpath);
|
|
|
ConvertError error = ConvertError.ERR_UNKNOWN;
|
|
|
|
|
|
string filename = GetFileNameAddSuffix(outputFolder, outputFileName, ".ppt");
|
|
|
|
|
|
- result = await Task.Run(() => pptConverter.Convert(outputFolder, ref outputFileName, pptOptions,pageArray, ref error, getProgress));
|
|
|
+ result = await Task.Run(() => pptConverter.Convert(outputFolder, ref outputFileName, pptOptions, pageArray, ref error, getProgress));
|
|
|
if (result)
|
|
|
{
|
|
|
CommonHelper.ShowFileBrowser(outputFileName.Replace("/", "\\"));
|
|
@@ -79,18 +79,18 @@ namespace PDF_Office.Helper
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public static async Task<bool> ExcelConvert(string inputpath, string outputpath,OnProgress getProgress , List<int> pageIndexLists, string pawssword,CPDFConvertExcelOptions ExcelOption)
|
|
|
+ public static async Task<bool> ExcelConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertExcelOptions ExcelOption, bool IsCustomFileName = true)
|
|
|
{
|
|
|
bool result = false;
|
|
|
try
|
|
|
{
|
|
|
- excelConverter = new CPDFConverterExcel(inputpath,pawssword);
|
|
|
+ excelConverter = new CPDFConverterExcel(inputpath, pawssword);
|
|
|
int[] pageArray = pageIndexLists.ToArray();
|
|
|
|
|
|
- string outputFolder = outputpath;
|
|
|
- string outputFileName = Path.GetFileNameWithoutExtension(inputpath);
|
|
|
+ string outputFolder = outputpath.Remove(outputpath.LastIndexOf("\\"));
|
|
|
+ string outputFileName = Path.GetFileNameWithoutExtension(outputpath);
|
|
|
ConvertError error = ConvertError.ERR_UNKNOWN;
|
|
|
- result = await Task.Run(() => excelConverter.Convert(outputFolder, ref outputFileName, ExcelOption, pageArray, ref error, getProgress));
|
|
|
+ result = await Task.Run(() => excelConverter.Convert(outputFolder, ref outputFileName, ExcelOption, pageArray, ref error, getProgress));
|
|
|
if (result)
|
|
|
{
|
|
|
if (File.Exists(outputFileName))
|
|
@@ -98,13 +98,13 @@ namespace PDF_Office.Helper
|
|
|
else if (outputFileName == "NoTable")
|
|
|
MessageBoxEx.Show("No Table");
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
- {
|
|
|
+ {
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -129,7 +129,7 @@ namespace PDF_Office.Helper
|
|
|
// return result;
|
|
|
//}
|
|
|
|
|
|
- public static async Task<bool> CSVConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertCsvOptions csvOptions =null)
|
|
|
+ public static async Task<bool> CSVConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertCsvOptions csvOptions = null, bool IsCustomFileName = true)
|
|
|
{
|
|
|
bool result = false;
|
|
|
try
|
|
@@ -137,18 +137,44 @@ namespace PDF_Office.Helper
|
|
|
int[] pageArray = pageIndexLists.ToArray();
|
|
|
|
|
|
csvConverter = new CPDFConverterCsv(inputpath, pawssword);
|
|
|
- string outputFolder = outputpath;
|
|
|
- string outputFileName = Path.GetFileNameWithoutExtension(inputpath);
|
|
|
+ string outputFolder = "";
|
|
|
+ string outputFileName = "";
|
|
|
+ if (IsCustomFileName)
|
|
|
+ {
|
|
|
+ outputFolder = outputpath.Remove(outputpath.LastIndexOf("\\"));
|
|
|
+ outputFileName = Path.GetFileNameWithoutExtension(outputpath);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ outputFolder = outputpath;
|
|
|
+ outputFileName = Path.GetFileNameWithoutExtension(inputpath);
|
|
|
+ }
|
|
|
+
|
|
|
ConvertError error = ConvertError.ERR_UNKNOWN;
|
|
|
string filename = GetFileNameAddSuffix(outputFolder, outputFileName, ".csv");
|
|
|
result = await Task.Run(() => csvConverter.Convert(outputFolder, ref outputFileName, csvOptions, pageArray, ref error, getProgress));
|
|
|
if (result)
|
|
|
{
|
|
|
+
|
|
|
+
|
|
|
if (File.Exists(outputFileName))
|
|
|
- CommonHelper.ShowFileBrowser(outputFileName.Replace("/", "\\"));
|
|
|
+ {
|
|
|
+ if (IsCustomFileName)
|
|
|
+ {
|
|
|
+ CommonHelper.ShowFileBrowser(outputFileName.Replace("/", "\\"));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ string FileName = CommonHelper.CreateFolder(outputFileName.Replace(".zip", ""));
|
|
|
+ ZipFile.ExtractToDirectory(outputFileName, FileName);
|
|
|
+ File.Delete(outputFileName);
|
|
|
+ CommonHelper.ShowFileBrowser(FileName.Replace("/", "\\"));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
else
|
|
|
MessageBox.Show("None CSV");
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -158,7 +184,7 @@ namespace PDF_Office.Helper
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public static async Task<bool> TxtConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword,CPDFConvertTxtOptions txtOptions =null)
|
|
|
+ public static async Task<bool> TxtConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertTxtOptions txtOptions = null, bool IsCustomFileName = true)
|
|
|
{
|
|
|
bool result = false;
|
|
|
try
|
|
@@ -166,8 +192,8 @@ namespace PDF_Office.Helper
|
|
|
int[] pageArray = pageIndexLists.ToArray();
|
|
|
|
|
|
txtConverter = new CPDFConverterTxt(inputpath, pawssword);
|
|
|
- string outputFolder = outputpath;
|
|
|
- string outputFileName = Path.GetFileNameWithoutExtension(inputpath);
|
|
|
+ string outputFolder = outputpath.Remove(outputpath.LastIndexOf("\\"));
|
|
|
+ string outputFileName = Path.GetFileNameWithoutExtension(outputpath);
|
|
|
ConvertError error = ConvertError.ERR_UNKNOWN;
|
|
|
string filename = GetFileNameAddSuffix(outputFolder, outputFileName, ".txt");
|
|
|
result = await Task.Run(() => txtConverter.Convert(outputFolder, ref outputFileName, txtOptions, pageArray, ref error, getProgress));
|
|
@@ -183,29 +209,31 @@ namespace PDF_Office.Helper
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public static void ImageMagickPDFToImage(string imageType,string filePath,string outputFolder,string outputFileName,ref string FileName) {
|
|
|
- FileName = CommonHelper.CreateFolder(outputFolder +"\\"+ outputFileName);
|
|
|
+ public static void ImageMagickPDFToImage(string imageType, string filePath, string outputFolder, string outputFileName, ref string FileName)
|
|
|
+ {
|
|
|
+ FileName = CommonHelper.CreateFolder(outputFolder + "\\" + outputFileName);
|
|
|
ZipFile.ExtractToDirectory(filePath, FileName);
|
|
|
var files = Directory.GetFiles(FileName, "*.png");
|
|
|
- int i=0;
|
|
|
+ int i = 0;
|
|
|
var images = new MagickImageCollection();
|
|
|
foreach (var file in files)
|
|
|
{
|
|
|
//pdf整体转为gif,将.gifoff改为.gif
|
|
|
Trace.WriteLine(file);
|
|
|
- if (imageType == ".gifoff") {
|
|
|
+ if (imageType == ".gifoff")
|
|
|
+ {
|
|
|
images.Add(file);
|
|
|
images[i].AnimationDelay = 100; // in this example delay is 1000ms/1sec
|
|
|
images[i].Flip();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
using (var image = new MagickImage(file))
|
|
|
{
|
|
|
if (imageType != ".gifoff")
|
|
|
{
|
|
|
- //Save frame as jpg
|
|
|
- //image.Format = MagickFormat.Jp2;
|
|
|
- image.Write(file.Remove(file.LastIndexOf(".png"), 4) + imageType);
|
|
|
+ //Save frame as jpg
|
|
|
+ //image.Format = MagickFormat.Jp2;
|
|
|
+ image.Write(file.Remove(file.LastIndexOf(".png"), 4) + imageType);
|
|
|
}
|
|
|
// 删除该文件
|
|
|
System.IO.File.Delete(file);
|
|
@@ -236,11 +264,11 @@ namespace PDF_Office.Helper
|
|
|
}
|
|
|
}
|
|
|
else { images.Write(outputFolder + "\\" + outputFileName + ".gif"); }
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
//else {
|
|
|
// int fileIndex = 1;
|
|
|
-
|
|
|
+
|
|
|
// if (File.Exists(outputFolder + "\\" + outputFileName + ".zip"))
|
|
|
// {
|
|
|
// while (fileIndex>=1) {
|
|
@@ -253,15 +281,15 @@ namespace PDF_Office.Helper
|
|
|
// }
|
|
|
// }
|
|
|
// else { ZipFile.CreateFromDirectory(outputFolder + "\\" + outputFileName, outputFolder + "\\" + outputFileName + ".zip"); }
|
|
|
-
|
|
|
+
|
|
|
//}
|
|
|
//DirectoryInfo di = new DirectoryInfo(outputFolder + "\\" + outputFileName);
|
|
|
//di.Delete(true);
|
|
|
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- public static async Task<bool> ImgConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists,string pawssword,string imageType=".png", CPDFConvertImgOptions imgOptions = null)
|
|
|
+ public static async Task<bool> ImgConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, string imageType = ".png", CPDFConvertImgOptions imgOptions = null)
|
|
|
{
|
|
|
string FileName = "";
|
|
|
bool result = false;
|
|
@@ -283,7 +311,7 @@ namespace PDF_Office.Helper
|
|
|
}
|
|
|
else
|
|
|
{ //创建缓存文件夹
|
|
|
-
|
|
|
+
|
|
|
string folderPath = Path.Combine(App.CurrentPath, "ConverterImg");
|
|
|
//有可能因为其他原因存在同名文件,导致创建文件夹失败,需要先删除同名文件
|
|
|
//保险措施(猜测)
|
|
@@ -301,8 +329,8 @@ namespace PDF_Office.Helper
|
|
|
//预览图缓存
|
|
|
string saveName = Guid.NewGuid().ToString();
|
|
|
string savePath = Path.Combine(folderPath, saveName);
|
|
|
- result = await Task.Run(() => imgConverter.Convert(folderPath, ref saveName, imgOptions, pageArray, ref error, getProgress));
|
|
|
- ImageMagickPDFToImage(imageType, saveName, outputFolder, outputFileName,ref FileName);
|
|
|
+ result = await Task.Run(() => imgConverter.Convert(folderPath, ref saveName, imgOptions, pageArray, ref error, getProgress));
|
|
|
+ ImageMagickPDFToImage(imageType, saveName, outputFolder, outputFileName, ref FileName);
|
|
|
DirectoryInfo di = new DirectoryInfo(folderPath);
|
|
|
di.Delete(true);
|
|
|
}
|
|
@@ -310,7 +338,7 @@ namespace PDF_Office.Helper
|
|
|
if (result)
|
|
|
{
|
|
|
//Process.Start(FileName.Replace("/", "\\"));
|
|
|
- CommonHelper.ShowFileBrowser(FileName);
|
|
|
+ CommonHelper.ShowFileBrowser(FileName.Replace("/", "\\"));
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -320,17 +348,17 @@ namespace PDF_Office.Helper
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public static async Task<bool> RTFConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertRTFOptions rtfOptions=null)
|
|
|
+ public static async Task<bool> RTFConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertRTFOptions rtfOptions = null, bool IsCustomFileName = true)
|
|
|
{
|
|
|
bool result = false;
|
|
|
try
|
|
|
{
|
|
|
int[] pageArray = pageIndexLists.ToArray();
|
|
|
rtfConverter = new CPDFConverterRTF(inputpath, pawssword);
|
|
|
- string outputFolder = outputpath;
|
|
|
- string outputFileName = Path.GetFileNameWithoutExtension(inputpath);
|
|
|
+ string outputFolder = outputpath.Remove(outputpath.LastIndexOf("\\"));
|
|
|
+ string outputFileName = Path.GetFileNameWithoutExtension(outputpath);
|
|
|
ConvertError error = ConvertError.ERR_UNKNOWN;
|
|
|
- result = await Task.Run(() => rtfConverter.Convert(outputFolder, ref outputFileName, rtfOptions,pageArray, ref error, getProgress));
|
|
|
+ result = await Task.Run(() => rtfConverter.Convert(outputFolder, ref outputFileName, rtfOptions, pageArray, ref error, getProgress));
|
|
|
if (result)
|
|
|
{
|
|
|
CommonHelper.ShowFileBrowser(outputFileName.Replace("/", "\\"));
|
|
@@ -343,7 +371,7 @@ namespace PDF_Office.Helper
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public static async Task<bool> HTMLConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertHTMLOptions HtmlOption)
|
|
|
+ public static async Task<bool> HTMLConvert(string inputpath, string outputpath, OnProgress getProgress, List<int> pageIndexLists, string pawssword, CPDFConvertHTMLOptions HtmlOption, bool IsCustomFileName = true)
|
|
|
{
|
|
|
bool result = false;
|
|
|
try
|
|
@@ -351,8 +379,8 @@ namespace PDF_Office.Helper
|
|
|
htmlConverter = new CPDFConverterHTML(inputpath, pawssword);
|
|
|
int[] pageArray = pageIndexLists.ToArray();
|
|
|
|
|
|
- string outputFolder = outputpath;
|
|
|
- string outputFileName = Path.GetFileNameWithoutExtension(inputpath);
|
|
|
+ string outputFolder = outputpath.Remove(outputpath.LastIndexOf("\\"));
|
|
|
+ string outputFileName = Path.GetFileNameWithoutExtension(outputpath);
|
|
|
ConvertError error = ConvertError.ERR_UNKNOWN;
|
|
|
result = await Task.Run(() => htmlConverter.Convert(outputFolder, ref outputFileName, HtmlOption, pageArray, ref error, getProgress));
|
|
|
if (result)
|