PDFToolsHelper.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. using PDF_Office.Model.PDFTool;
  2. using PDF_Office.Properties;
  3. using PDFSettings;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PDF_Office.Helper
  10. {
  11. /// <summary>
  12. /// 预设需求:远程控制对PDF工具进行排序
  13. /// </summary>
  14. public enum PDFToolType
  15. {
  16. /// <summary>
  17. /// 普通工具
  18. /// </summary>
  19. Normal,
  20. /// <summary>
  21. /// 常用工具
  22. /// </summary>
  23. Common,
  24. /// <summary>
  25. ///付费工具
  26. /// </summary>
  27. Payment,
  28. /// <summary>
  29. /// 优势工具
  30. /// </summary>
  31. Advantage,
  32. /// <summary>
  33. /// 无需打开文档
  34. /// </summary>
  35. NoNeedToOpenDoc
  36. }
  37. public enum PDFFnType
  38. {
  39. Split,
  40. Extract,
  41. Insert,
  42. Compress,
  43. Merge,
  44. Print,
  45. Security,
  46. ConvertPDF,
  47. PDFToWord,
  48. PDFToExcel,
  49. PDFToPPT,
  50. ImageToPDF,
  51. OCR,
  52. WaterMark,
  53. HeaderFooter,
  54. BatesNumbers,
  55. Batch,
  56. Background,
  57. CompareDoc
  58. }
  59. /// <summary>
  60. /// PDF工具初始化类型
  61. /// </summary>
  62. internal class PDFToolsInit
  63. {
  64. public ToolItem toolItem { get; private set; }
  65. public PDFToolsInit()
  66. {
  67. toolItem = new ToolItem();
  68. }
  69. /// <summary>
  70. /// 图标
  71. /// </summary>
  72. public void SetImagePath(string path)
  73. {
  74. toolItem.Image = path;
  75. }
  76. /// <summary>
  77. /// 初始化UI显示内容
  78. /// </summary>
  79. public void SetContent(string fnName,string fnInfo)
  80. {
  81. toolItem.Title = fnName;
  82. toolItem.TitleInfo = fnInfo;
  83. }
  84. /// <summary>
  85. /// 初始化功能
  86. /// </summary>
  87. public void SetFnType(PDFFnType fnType)
  88. {
  89. toolItem.FnType = (int)fnType;
  90. toolItem.strFnType = Enum.GetName(typeof(PDFFnType), fnType);
  91. }
  92. }
  93. public class PDFToolsHelper
  94. {
  95. public List<ToolItem> AllTools = null;
  96. public List<ToolItem> QuickTools = null;
  97. public List<ToolItem> MoreTools = null;
  98. private static PDFToolsHelper pDFToolsHelper;
  99. public static PDFToolsHelper GetInstance()
  100. {
  101. if (pDFToolsHelper == null)
  102. pDFToolsHelper = new PDFToolsHelper();
  103. return pDFToolsHelper;
  104. }
  105. private PDFToolsHelper()
  106. {
  107. InitPDFTools();
  108. }
  109. private void InitPDFTools()
  110. {
  111. AllTools = new List<ToolItem>();
  112. QuickTools = new List<ToolItem>();
  113. MoreTools = new List<ToolItem>();
  114. //测试代码
  115. //Settings.Default.AllPDFToolsList.Clear();
  116. //Settings.Default.QuickPDFToolsList.Clear();
  117. //Settings.Default.Save();
  118. InitAllTools();
  119. ContianNewTools();
  120. InitQuickTools();
  121. InitMoreTools();
  122. }
  123. private void InitAllTools()
  124. {
  125. var split = new PDFToolsInit();
  126. split.SetFnType(PDFFnType.Split);
  127. split.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/split.png");
  128. split.SetContent("拆分", "Batch convert, compress, secure, watermark PDFs.");
  129. var extract = new PDFToolsInit();
  130. extract.SetFnType(PDFFnType.Extract);
  131. extract.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/extract.png");
  132. extract.SetContent("提取", "Batch convert, compress, secure, watermark PDFs.");
  133. var insert = new PDFToolsInit();
  134. insert.SetFnType(PDFFnType.Insert);
  135. insert.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/insert.png");
  136. insert.SetContent("插入", "Batch convert, compress, secure, watermark PDFs.");
  137. var compress = new PDFToolsInit();
  138. compress.SetFnType(PDFFnType.Compress);
  139. compress.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/compress.png");
  140. compress.SetContent("压缩", "Batch convert, compress, secure, watermark PDFs.");
  141. var merge = new PDFToolsInit();
  142. merge.SetFnType(PDFFnType.Merge);
  143. merge.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/merge.png");
  144. merge.SetContent("合并", "Batch convert, compress, secure, watermark PDFs.");
  145. var print = new PDFToolsInit();
  146. print.SetFnType(PDFFnType.Print);
  147. print.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/print.png");
  148. print.SetContent("打印", "Batch convert, compress, secure, watermark PDFs.");
  149. var security = new PDFToolsInit();
  150. security.SetFnType(PDFFnType.Security);
  151. security.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/security.png");
  152. security.SetContent("安全", "Batch convert, compress, secure, watermark PDFs.");
  153. var convertPDF = new PDFToolsInit();
  154. convertPDF.SetFnType(PDFFnType.ConvertPDF);
  155. convertPDF.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/convert.png");
  156. convertPDF.SetContent("转档PDF", "Batch convert, compress, secure, watermark PDFs.");
  157. var pDFToWord = new PDFToolsInit();
  158. pDFToWord.SetFnType(PDFFnType.PDFToWord);
  159. pDFToWord.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-word.png");
  160. pDFToWord.SetContent("PDF转Word", "Batch convert, compress, secure, watermark PDFs.");
  161. var pDFToExcel = new PDFToolsInit();
  162. pDFToExcel.SetFnType(PDFFnType.PDFToExcel);
  163. pDFToExcel.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-excel.png");
  164. pDFToExcel.SetContent("PDF转Excel", "Batch convert, compress, secure, watermark PDFs.");
  165. var pDFToPPT = new PDFToolsInit();
  166. pDFToPPT.SetFnType(PDFFnType.PDFToPPT);
  167. pDFToPPT.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-ppt.png");
  168. pDFToPPT.SetContent("PDF转PPT", "Batch convert, compress, secure, watermark PDFs.");
  169. var imageToPDF = new PDFToolsInit();
  170. imageToPDF.SetFnType(PDFFnType.ImageToPDF);
  171. imageToPDF.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/image.png");
  172. imageToPDF.SetContent("图片转PDF", "Batch convert, compress, secure, watermark PDFs.");
  173. var oCR = new PDFToolsInit();
  174. oCR.SetFnType(PDFFnType.OCR);
  175. oCR.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/ocr.png");
  176. oCR.SetContent("OCR", "Batch convert, compress, secure, watermark PDFs.");
  177. var waterMark = new PDFToolsInit();
  178. waterMark.SetFnType(PDFFnType.WaterMark);
  179. waterMark.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/watermark.png");
  180. waterMark.SetContent("水印", "Batch convert, compress, secure, watermark PDFs.");
  181. var headerFooter = new PDFToolsInit();
  182. headerFooter.SetFnType(PDFFnType.HeaderFooter);
  183. headerFooter.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/header&footer.png");
  184. headerFooter.SetContent("页眉页脚", "Batch convert, compress, secure, watermark PDFs.");
  185. var batesNumbers = new PDFToolsInit();
  186. batesNumbers.SetFnType(PDFFnType.BatesNumbers);
  187. batesNumbers.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/batesnumbers.png");
  188. batesNumbers.SetContent("贝茨Bates码", "Batch convert, compress, secure, watermark PDFs.");
  189. var batch = new PDFToolsInit();
  190. batch.SetFnType(PDFFnType.Batch);
  191. batch.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/batch.png");
  192. batch.SetContent("批量处理", "Batch convert, compress, secure, watermark PDFs.");
  193. var background = new PDFToolsInit();
  194. background.SetFnType(PDFFnType.Background);
  195. background.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/background.png");
  196. background.SetContent("背景", "Batch convert, compress, secure, watermark PDFs.");
  197. var compareDoc = new PDFToolsInit();
  198. compareDoc.SetFnType(PDFFnType.CompareDoc);
  199. compareDoc.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/compress.png");
  200. compareDoc.SetContent("文件对比", "Batch convert, compress, secure, watermark PDFs.");
  201. AllTools.Add(split.toolItem);
  202. AllTools.Add(extract.toolItem);
  203. AllTools.Add(insert.toolItem);
  204. AllTools.Add(compress.toolItem);
  205. AllTools.Add(merge.toolItem);
  206. AllTools.Add(print.toolItem);
  207. AllTools.Add(security.toolItem);
  208. AllTools.Add(convertPDF.toolItem);
  209. AllTools.Add(pDFToWord.toolItem);
  210. AllTools.Add(pDFToExcel.toolItem);
  211. AllTools.Add(pDFToPPT.toolItem);
  212. AllTools.Add(imageToPDF.toolItem);
  213. AllTools.Add(oCR.toolItem);
  214. AllTools.Add(waterMark.toolItem);
  215. AllTools.Add(headerFooter.toolItem);
  216. AllTools.Add(batesNumbers.toolItem);
  217. AllTools.Add(batch.toolItem);
  218. AllTools.Add(background.toolItem);
  219. AllTools.Add(compareDoc.toolItem);
  220. }
  221. private void ContianNewTools()
  222. {
  223. Settings.Default.AllPDFToolsList.Clear();
  224. foreach (var item in AllTools)
  225. {
  226. Settings.Default.AllPDFToolsList.Add(item);
  227. }
  228. Settings.Default.Save();
  229. }
  230. /// <summary>
  231. /// 快捷工具
  232. /// </summary>
  233. private void InitQuickTools()
  234. {
  235. var settingQuickToolslist = Settings.Default.QuickPDFToolsList;
  236. int quickToolCount = 0;
  237. if (settingQuickToolslist != null && settingQuickToolslist.Count > 0)
  238. {
  239. foreach (var item in AllTools)
  240. {
  241. if (quickToolCount == 8)
  242. break;
  243. var pdfToolItem = settingQuickToolslist.FirstOrDefault(tool => tool.strFnType == item.strFnType);
  244. if (pdfToolItem != null)
  245. {
  246. quickToolCount++;
  247. pdfToolItem.FnType = item.FnType;
  248. QuickTools.Add(pdfToolItem);
  249. }
  250. }
  251. if (quickToolCount < 8 && AllTools.Count > 8)
  252. {
  253. var count = 8 - quickToolCount;
  254. for (int i = count - 1; i < count; i++)
  255. {
  256. QuickTools.Add(AllTools[i]);
  257. }
  258. }
  259. }
  260. else
  261. {
  262. if (settingQuickToolslist == null)
  263. Settings.Default.QuickPDFToolsList = new QuickPDFToolsList();
  264. QuickTools = AllTools.Take(8).ToList<ToolItem>();
  265. foreach(var item in QuickTools)
  266. {
  267. Settings.Default.QuickPDFToolsList.Add(item);
  268. }
  269. Settings.Default.Save();
  270. }
  271. }
  272. private void InitMoreTools()
  273. {
  274. List<ToolItem> more = new List<ToolItem>();
  275. foreach (var item in AllTools)
  276. {
  277. var pdfToolItem = QuickTools.FirstOrDefault(tool => tool.strFnType == item.strFnType);
  278. if (pdfToolItem == null)
  279. {
  280. more.Add(item);
  281. }
  282. }
  283. MoreTools = more;
  284. }
  285. }
  286. }