using PDF_Office.Model.PDFTool;
using PDF_Office.Properties;
using PDFSettings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDF_Office.Helper
{
///
/// 预设需求:远程控制对PDF工具进行排序
///
public enum PDFToolType
{
///
/// 普通工具
///
Normal,
///
/// 常用工具
///
Common,
///
///付费工具
///
Payment,
///
/// 优势工具
///
Advantage,
///
/// 无需打开文档
///
NoNeedToOpenDoc
}
public enum PDFFnType
{
Split,
Extract,
Insert,
Compress,
Merge,
Print,
Security,
ConvertPDF,
PDFToWord,
PDFToExcel,
PDFToPPT,
ImageToPDF,
OCR,
WaterMark,
HeaderFooter,
BatesNumbers,
Batch,
Background,
CompareDoc
}
///
/// PDF工具初始化类型
///
internal class PDFToolsInit
{
public ToolItem toolItem { get; private set; }
public PDFToolsInit()
{
toolItem = new ToolItem();
}
///
/// 图标
///
public void SetImagePath(string path)
{
toolItem.Image = path;
}
///
/// 初始化UI显示内容
///
public void SetContent(string fnName,string fnInfo)
{
toolItem.Title = fnName;
toolItem.TitleInfo = fnInfo;
}
///
/// 初始化功能
///
public void SetFnType(PDFFnType fnType)
{
toolItem.FnType = (int)fnType;
toolItem.strFnType = Enum.GetName(typeof(PDFFnType), fnType);
}
}
public class PDFToolsHelper
{
public List AllTools = null;
public List QuickTools = null;
public List MoreTools = null;
private static PDFToolsHelper pDFToolsHelper;
public static PDFToolsHelper GetInstance()
{
if (pDFToolsHelper == null)
pDFToolsHelper = new PDFToolsHelper();
return pDFToolsHelper;
}
private PDFToolsHelper()
{
InitPDFTools();
}
private void InitPDFTools()
{
AllTools = new List();
QuickTools = new List();
MoreTools = new List();
//测试代码
//Settings.Default.AllPDFToolsList.Clear();
//Settings.Default.QuickPDFToolsList.Clear();
//Settings.Default.Save();
InitAllTools();
ContianNewTools();
InitQuickTools();
InitMoreTools();
}
private void InitAllTools()
{
var split = new PDFToolsInit();
split.SetFnType(PDFFnType.Split);
split.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/split.png");
split.SetContent("拆分", "Batch convert, compress, secure, watermark PDFs.");
var extract = new PDFToolsInit();
extract.SetFnType(PDFFnType.Extract);
extract.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/extract.png");
extract.SetContent("提取", "Batch convert, compress, secure, watermark PDFs.");
var insert = new PDFToolsInit();
insert.SetFnType(PDFFnType.Insert);
insert.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/insert.png");
insert.SetContent("插入", "Batch convert, compress, secure, watermark PDFs.");
var compress = new PDFToolsInit();
compress.SetFnType(PDFFnType.Compress);
compress.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/compress.png");
compress.SetContent("压缩", "Batch convert, compress, secure, watermark PDFs.");
var merge = new PDFToolsInit();
merge.SetFnType(PDFFnType.Merge);
merge.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/merge.png");
merge.SetContent("合并", "Batch convert, compress, secure, watermark PDFs.");
var print = new PDFToolsInit();
print.SetFnType(PDFFnType.Print);
print.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/print.png");
print.SetContent("打印", "Batch convert, compress, secure, watermark PDFs.");
var security = new PDFToolsInit();
security.SetFnType(PDFFnType.Security);
security.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/security.png");
security.SetContent("安全", "Batch convert, compress, secure, watermark PDFs.");
var convertPDF = new PDFToolsInit();
convertPDF.SetFnType(PDFFnType.ConvertPDF);
convertPDF.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/convert.png");
convertPDF.SetContent("转档PDF", "Batch convert, compress, secure, watermark PDFs.");
var pDFToWord = new PDFToolsInit();
pDFToWord.SetFnType(PDFFnType.PDFToWord);
pDFToWord.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-word.png");
pDFToWord.SetContent("PDF转Word", "Batch convert, compress, secure, watermark PDFs.");
var pDFToExcel = new PDFToolsInit();
pDFToExcel.SetFnType(PDFFnType.PDFToExcel);
pDFToExcel.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-excel.png");
pDFToExcel.SetContent("PDF转Excel", "Batch convert, compress, secure, watermark PDFs.");
var pDFToPPT = new PDFToolsInit();
pDFToPPT.SetFnType(PDFFnType.PDFToPPT);
pDFToPPT.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/pdf-to-ppt.png");
pDFToPPT.SetContent("PDF转PPT", "Batch convert, compress, secure, watermark PDFs.");
var imageToPDF = new PDFToolsInit();
imageToPDF.SetFnType(PDFFnType.ImageToPDF);
imageToPDF.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/image.png");
imageToPDF.SetContent("图片转PDF", "Batch convert, compress, secure, watermark PDFs.");
var oCR = new PDFToolsInit();
oCR.SetFnType(PDFFnType.OCR);
oCR.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/ocr.png");
oCR.SetContent("OCR", "Batch convert, compress, secure, watermark PDFs.");
var waterMark = new PDFToolsInit();
waterMark.SetFnType(PDFFnType.WaterMark);
waterMark.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/watermark.png");
waterMark.SetContent("水印", "Batch convert, compress, secure, watermark PDFs.");
var headerFooter = new PDFToolsInit();
headerFooter.SetFnType(PDFFnType.HeaderFooter);
headerFooter.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/header&footer.png");
headerFooter.SetContent("页眉页脚", "Batch convert, compress, secure, watermark PDFs.");
var batesNumbers = new PDFToolsInit();
batesNumbers.SetFnType(PDFFnType.BatesNumbers);
batesNumbers.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/batesnumbers.png");
batesNumbers.SetContent("贝茨Bates码", "Batch convert, compress, secure, watermark PDFs.");
var batch = new PDFToolsInit();
batch.SetFnType(PDFFnType.Batch);
batch.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/batch.png");
batch.SetContent("批量处理", "Batch convert, compress, secure, watermark PDFs.");
var background = new PDFToolsInit();
background.SetFnType(PDFFnType.Background);
background.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/background.png");
background.SetContent("背景", "Batch convert, compress, secure, watermark PDFs.");
var compareDoc = new PDFToolsInit();
compareDoc.SetFnType(PDFFnType.CompareDoc);
compareDoc.SetImagePath(@"pack://application:,,,/Resources/HomeIcon/PDFTools/compress.png");
compareDoc.SetContent("文件对比", "Batch convert, compress, secure, watermark PDFs.");
AllTools.Add(split.toolItem);
AllTools.Add(extract.toolItem);
AllTools.Add(insert.toolItem);
AllTools.Add(compress.toolItem);
AllTools.Add(merge.toolItem);
AllTools.Add(print.toolItem);
AllTools.Add(security.toolItem);
AllTools.Add(convertPDF.toolItem);
AllTools.Add(pDFToWord.toolItem);
AllTools.Add(pDFToExcel.toolItem);
AllTools.Add(pDFToPPT.toolItem);
AllTools.Add(imageToPDF.toolItem);
AllTools.Add(oCR.toolItem);
AllTools.Add(waterMark.toolItem);
AllTools.Add(headerFooter.toolItem);
AllTools.Add(batesNumbers.toolItem);
AllTools.Add(batch.toolItem);
AllTools.Add(background.toolItem);
AllTools.Add(compareDoc.toolItem);
}
private void ContianNewTools()
{
Settings.Default.AllPDFToolsList.Clear();
foreach (var item in AllTools)
{
Settings.Default.AllPDFToolsList.Add(item);
}
Settings.Default.Save();
}
///
/// 快捷工具
///
private void InitQuickTools()
{
var settingQuickToolslist = Settings.Default.QuickPDFToolsList;
int quickToolCount = 0;
if (settingQuickToolslist != null && settingQuickToolslist.Count > 0)
{
foreach (var item in AllTools)
{
if (quickToolCount == 8)
break;
var pdfToolItem = settingQuickToolslist.FirstOrDefault(tool => tool.strFnType == item.strFnType);
if (pdfToolItem != null)
{
quickToolCount++;
pdfToolItem.FnType = item.FnType;
QuickTools.Add(pdfToolItem);
}
}
if (quickToolCount < 8 && AllTools.Count > 8)
{
var count = 8 - quickToolCount;
for (int i = count - 1; i < count; i++)
{
QuickTools.Add(AllTools[i]);
}
}
}
else
{
if (settingQuickToolslist == null)
Settings.Default.QuickPDFToolsList = new QuickPDFToolsList();
QuickTools = AllTools.Take(8).ToList();
foreach(var item in QuickTools)
{
Settings.Default.QuickPDFToolsList.Add(item);
}
Settings.Default.Save();
}
}
private void InitMoreTools()
{
List more = new List();
foreach (var item in AllTools)
{
var pdfToolItem = QuickTools.FirstOrDefault(tool => tool.strFnType == item.strFnType);
if (pdfToolItem == null)
{
more.Add(item);
}
}
MoreTools = more;
}
}
}