|
@@ -23,7 +23,8 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
{
|
|
|
public class HomePageSplitDialogViewModel : BindableBase, IDialogAware
|
|
|
{
|
|
|
- CPDFDocument document;
|
|
|
+ #region 参数和属性
|
|
|
+ public CPDFDocument document;
|
|
|
|
|
|
private CPDFViewer currentViewer;
|
|
|
|
|
@@ -33,28 +34,6 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
|
|
|
private string savefilename { get; set; }
|
|
|
|
|
|
- public DelegateCommand CancelCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand SplitCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand AveragePagesCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand AverageFilesCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand CustomPageRangeCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand FrontFileNameCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand FileNameLabelCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand FileNameDeimiterCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand FileNameDeimiterChangeCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand FileNameLabelChangeCommand { get; set; }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
private string pageRangeText = "0";
|
|
|
public string PageRangeText
|
|
|
{
|
|
@@ -215,6 +194,49 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private string fileNameLabelIsEnabled = "False";
|
|
|
+ public string FileNameLabelIsEnabled
|
|
|
+ {
|
|
|
+ get { return fileNameLabelIsEnabled; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty(ref fileNameLabelIsEnabled, value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private string fileNameDeimiterIsEnabled = "False";
|
|
|
+ public string FileNameDeimiterIsEnabled
|
|
|
+ {
|
|
|
+ get { return fileNameDeimiterIsEnabled; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty(ref fileNameDeimiterIsEnabled, value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 委托声明
|
|
|
+ public DelegateCommand CancelCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand SplitCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand AveragePagesCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand AverageFilesCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand CustomPageRangeCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand FrontFileNameCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand FileNameLabelCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand FileNameDeimiterCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand FileNameDeimiterChangeCommand { get; set; }
|
|
|
+
|
|
|
+ public DelegateCommand FileNameLabelChangeCommand { get; set; }
|
|
|
+ #endregion
|
|
|
+
|
|
|
public HomePageSplitDialogViewModel()
|
|
|
{
|
|
|
CancelCommand = new DelegateCommand(cancel);
|
|
@@ -226,19 +248,13 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
FileNameLabelCommand = new DelegateCommand(fileNameLabel);
|
|
|
FileNameDeimiterCommand = new DelegateCommand(fileNameDeimiter);
|
|
|
FileNameDeimiterChangeCommand = new DelegateCommand(fileNameDeimiter);
|
|
|
- FileNameLabelChangeCommand= new DelegateCommand(fileNameLabel);
|
|
|
-
|
|
|
+ FileNameLabelChangeCommand = new DelegateCommand(fileNameLabel);
|
|
|
|
|
|
- }
|
|
|
|
|
|
- private void cancel()
|
|
|
- {
|
|
|
- RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
|
|
|
}
|
|
|
-
|
|
|
- private void split()
|
|
|
+ #region 逻辑函数
|
|
|
+ private void FileNameIsCheck()
|
|
|
{
|
|
|
- HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref splitModel.PageRange, PageRangeText);
|
|
|
|
|
|
if (FileNameDeimiterIsCheck == "True")
|
|
|
{
|
|
@@ -260,12 +276,24 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
if (FileNameLabelIsCheck == "True")
|
|
|
{
|
|
|
splitModel.FrontFileName = true;
|
|
|
+ splitModel.FileName = (savefilepath + currentViewer.Document.FileName + splitModel.FileNameDeimiter + splitModel.FileNameLabel);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
splitModel.FrontFileName = false;
|
|
|
+ splitModel.FileName = (savefilepath + splitModel.FileNameLabel + splitModel.FileNameDeimiter + currentViewer.Document.FileName);
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ private void cancel()
|
|
|
+ {
|
|
|
+ RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
|
|
|
+ }
|
|
|
|
|
|
+ private void split()
|
|
|
+ {
|
|
|
+ HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref splitModel.PageRange, PageRangeText);
|
|
|
+ FileNameIsCheck();
|
|
|
char[] enumerationSeparator = new char[] { ',' };
|
|
|
char[] rangeSeparator = new char[] { '-' };
|
|
|
if (!CommonHelper.GetPagesInRange(ref splitModel.PageParm, splitModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
|
|
@@ -273,40 +301,30 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
Trace.WriteLine("输入不对");
|
|
|
return;
|
|
|
}
|
|
|
- Trace.WriteLine("mmmmmmmmmmmmmmmmmmmmm---mmm"+splitModel.PageRange+"pppppp");
|
|
|
+ Trace.WriteLine("splitModel.PageRange: " + splitModel.PageRange + "-----");
|
|
|
if (splitModel.Mode == HomePageSplitDialogModel.SplitMode.AveragePages)
|
|
|
{
|
|
|
- if (AveragePagesText != "") {
|
|
|
- splitModel.GetModeCount = int.Parse(AveragePagesText);
|
|
|
+ if (AveragePagesText != "")
|
|
|
+ {
|
|
|
+ splitModel.GetModeCount = int.Parse(AveragePagesText);
|
|
|
}
|
|
|
int averagepagesremainder = 0;
|
|
|
var averagepagesdocs = HomePageEditHelper.AverageSplitPages(currentViewer.Document.PageCount, splitModel.GetModeCount, ref averagepagesremainder);
|
|
|
int averagepagesdoc;
|
|
|
- for (averagepagesdoc = 1; averagepagesdoc < averagepagesdocs; averagepagesdoc++) {
|
|
|
+ for (averagepagesdoc = 1; averagepagesdoc < averagepagesdocs; averagepagesdoc++)
|
|
|
+ {
|
|
|
CPDFDocument extractdoc = CPDFDocument.CreateDocument();
|
|
|
extractdoc.ImportPages(currentViewer.Document, (1 + splitModel.GetModeCount * (averagepagesdoc - 1)).ToString() + "-" + (splitModel.GetModeCount * averagepagesdoc).ToString());
|
|
|
- if (splitModel.FrontFileName)
|
|
|
- {
|
|
|
- extractdoc.WriteToFilePath(savefilepath + splitModel.FileNameDeimiter + splitModel.FileNameLabel + averagepagesdoc.ToString() + ".pdf");
|
|
|
- }
|
|
|
- else {
|
|
|
- extractdoc.WriteToFilePath(currentViewer.Document.FilePath + splitModel.FileNameLabel + splitModel.FileNameDeimiter + currentViewer.Document.FileName + averagepagesdoc.ToString() + ".pdf");
|
|
|
|
|
|
- }
|
|
|
+ extractdoc.WriteToFilePath(splitModel.FileName + averagepagesdoc.ToString() + ".pdf");
|
|
|
+
|
|
|
extractdoc.Release();
|
|
|
}
|
|
|
- if (averagepagesdoc == averagepagesdocs) {
|
|
|
+ if (averagepagesdoc == averagepagesdocs)
|
|
|
+ {
|
|
|
CPDFDocument extractdoc = CPDFDocument.CreateDocument();
|
|
|
extractdoc.ImportPages(currentViewer.Document, (1 + splitModel.GetModeCount * (averagepagesdoc - 1)).ToString() + "-" + currentViewer.Document.PageCount.ToString());
|
|
|
- if (splitModel.FrontFileName)
|
|
|
- {
|
|
|
- extractdoc.WriteToFilePath(savefilepath + splitModel.FileNameDeimiter + splitModel.FileNameLabel + averagepagesdoc.ToString() + ".pdf");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- extractdoc.WriteToFilePath(currentViewer.Document.FilePath + splitModel.FileNameLabel + splitModel.FileNameDeimiter + currentViewer.Document.FileName + averagepagesdoc.ToString() + ".pdf");
|
|
|
-
|
|
|
- }
|
|
|
+ extractdoc.WriteToFilePath(splitModel.FileName + averagepagesdoc.ToString() + ".pdf");
|
|
|
}
|
|
|
}
|
|
|
if (splitModel.Mode == HomePageSplitDialogModel.SplitMode.AverageFiles)
|
|
@@ -319,40 +337,43 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
var averagefilespages = HomePageEditHelper.AverageSplitDocs(currentViewer.Document.PageCount, splitModel.GetModeCount, ref averagefilesremainder);
|
|
|
int averagefilesdoc;
|
|
|
if (splitModel.GetModeCount > currentViewer.Document.PageCount)
|
|
|
- { splitModel.GetModeCount = 10; }
|
|
|
- for (averagefilesdoc = 1; averagefilesdoc <= splitModel.GetModeCount; averagefilesdoc++) {
|
|
|
+ {
|
|
|
+ splitModel.GetModeCount = 10;
|
|
|
+ }
|
|
|
+ for (averagefilesdoc = 1; averagefilesdoc <= splitModel.GetModeCount; averagefilesdoc++)
|
|
|
+ {
|
|
|
CPDFDocument extractdoc = CPDFDocument.CreateDocument();
|
|
|
- if (averagefilesremainder > 0) {
|
|
|
+ if (averagefilesremainder > 0)
|
|
|
+ {
|
|
|
extractdoc.ImportPages(currentViewer.Document, (1 + (averagefilespages + 1) * (averagefilesdoc - 1)).ToString() + "-" + ((averagefilespages + 1) * averagefilesdoc).ToString());
|
|
|
- Trace.WriteLine("gggggggggggggg" + (1 + (averagefilespages + 1) * (averagefilesdoc - 1)).ToString() + "-" + ((averagefilespages + 1) * averagefilesdoc).ToString());
|
|
|
- extractdoc.WriteToFilePath(savefilepath + splitModel.FileNameDeimiter + splitModel.FileNameLabel + averagefilesdoc.ToString() + ".pdf");
|
|
|
+ extractdoc.WriteToFilePath(splitModel.FileName + averagefilesdoc.ToString() + ".pdf");
|
|
|
averagefilesremainder--;
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
extractdoc.ImportPages(currentViewer.Document, (averagefilespages * averagefilesremainder + averagefilesremainder + 1 + averagefilespages * (averagefilesdoc - 1)).ToString() + "-" + (averagefilespages * averagefilesremainder + averagefilesremainder + (averagefilespages * averagefilesdoc)).ToString());
|
|
|
- Trace.WriteLine("gggggggggggggg" + (averagefilespages * averagefilesremainder + averagefilesremainder + 1 + averagefilespages * (averagefilesdoc - 1)).ToString() + "-" + (averagefilespages * averagefilesremainder + averagefilesremainder + (averagefilespages * averagefilesdoc)).ToString());
|
|
|
- extractdoc.WriteToFilePath(savefilepath + splitModel.FileNameDeimiter + splitModel.FileNameLabel + averagefilesdoc.ToString() + ".pdf");
|
|
|
+ extractdoc.WriteToFilePath(splitModel.FileName + averagefilesdoc.ToString() + ".pdf");
|
|
|
}
|
|
|
-
|
|
|
extractdoc.Release();
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
if (splitModel.Mode == HomePageSplitDialogModel.SplitMode.CustomPageRange)
|
|
|
{
|
|
|
-
|
|
|
CPDFDocument extractdoc = CPDFDocument.CreateDocument();
|
|
|
extractdoc.ImportPages(currentViewer.Document, splitModel.PageRange);
|
|
|
- extractdoc.WriteToFilePath(savefilepath + splitModel.FileNameDeimiter + splitModel.FileNameLabel + "1" + ".pdf");
|
|
|
- currentViewer.Document.RemovePages(splitModel.PageParm.ToArray());
|
|
|
- currentViewer.Document.WriteToFilePath(savefilepath + splitModel.FileNameDeimiter + splitModel.FileNameLabel + "2" + ".pdf");
|
|
|
-
|
|
|
+ extractdoc.WriteToFilePath(splitModel.FileName + "1" + ".pdf");
|
|
|
+ if (splitModel.PageRange != "1-" + currentViewer.Document.PageCount.ToString())
|
|
|
+ {
|
|
|
+ currentViewer.Document.RemovePages(splitModel.PageParm.ToArray());
|
|
|
+ currentViewer.Document.WriteToFilePath(splitModel.FileName + "2" + ".pdf");
|
|
|
+ }
|
|
|
}
|
|
|
System.Diagnostics.Process.Start("Explorer", "/select," + currentViewer.Document.FilePath);
|
|
|
RequestClose.Invoke(new DialogResult(ButtonResult.OK));
|
|
|
}
|
|
|
|
|
|
- private void averagePages() {
|
|
|
+ private void averagePages()
|
|
|
+ {
|
|
|
CustomPageRangeIsCheck = "False";
|
|
|
AverageFilesIsCheck = "False";
|
|
|
AveragePagesIsCheck = "True";
|
|
@@ -364,7 +385,8 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void averageFiles() {
|
|
|
+ private void averageFiles()
|
|
|
+ {
|
|
|
CustomPageRangeIsCheck = "False";
|
|
|
AverageFilesIsCheck = "True";
|
|
|
AveragePagesIsCheck = "False";
|
|
@@ -376,7 +398,8 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void customPageRange() {
|
|
|
+ private void customPageRange()
|
|
|
+ {
|
|
|
CustomPageRangeIsCheck = "True";
|
|
|
AverageFilesIsCheck = "False";
|
|
|
AveragePagesIsCheck = "False";
|
|
@@ -388,22 +411,36 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void frontFileName() {
|
|
|
+ private void frontFileName()
|
|
|
+ {
|
|
|
+ if (FileNameLabelIsCheck == "False")
|
|
|
+ {
|
|
|
+ FileNameLabelText = "";
|
|
|
+ }
|
|
|
+ if (FileNameDeimiterIsCheck == "False")
|
|
|
+ { FileNameDeimiterText = ""; }
|
|
|
if (FrontFileIsCheck == "True")
|
|
|
{
|
|
|
FilePathName = savefilename + FileNameDeimiterText + FileNameLabelText;
|
|
|
splitModel.FrontFileName = true;
|
|
|
}
|
|
|
- else {
|
|
|
- splitModel.FrontFileName=false;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ splitModel.FrontFileName = false;
|
|
|
FilePathName = FileNameLabelText + FileNameDeimiterText + savefilename;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- private void fileNameLabel() {
|
|
|
+ private void fileNameLabel()
|
|
|
+ {
|
|
|
+ if (FileNameDeimiterIsCheck == "False")
|
|
|
+ {
|
|
|
+ FileNameDeimiterText = "";
|
|
|
+ }
|
|
|
if (FileNameLabelIsCheck == "True")
|
|
|
{
|
|
|
+ FileNameLabelIsEnabled = "True";
|
|
|
if (FrontFileIsCheck == "True")
|
|
|
{
|
|
|
FilePathName = savefilename + FileNameDeimiterText + FileNameLabelText;
|
|
@@ -415,55 +452,60 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
FilePathName = FileNameLabelText + FileNameDeimiterText + savefilename;
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
-
|
|
|
+ else
|
|
|
+ {
|
|
|
+ FileNameLabelIsEnabled = "False";
|
|
|
+
|
|
|
if (FrontFileIsCheck == "True")
|
|
|
{
|
|
|
- FilePathName = savefilename + FileNameDeimiterText + FileNameLabelText;
|
|
|
+ FilePathName = savefilename + FileNameDeimiterText;
|
|
|
splitModel.FrontFileName = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
splitModel.FrontFileName = false;
|
|
|
- FilePathName = FileNameLabelText + FileNameDeimiterText + savefilename;
|
|
|
+ FilePathName = FileNameDeimiterText + savefilename;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- private void fileNameDeimiter() {
|
|
|
+ private void fileNameDeimiter()
|
|
|
+ {
|
|
|
+
|
|
|
+ if (FileNameLabelIsCheck == "False")
|
|
|
+ {
|
|
|
+ FileNameLabelText = "";
|
|
|
+ }
|
|
|
if (FileNameDeimiterIsCheck == "True")
|
|
|
{
|
|
|
+ FileNameDeimiterIsEnabled = "True";
|
|
|
if (FrontFileIsCheck == "True")
|
|
|
{
|
|
|
FilePathName = savefilename + FileNameDeimiterText + FileNameLabelText;
|
|
|
-
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
-
|
|
|
FilePathName = FileNameLabelText + FileNameDeimiterText + savefilename;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
-
|
|
|
+ FileNameDeimiterIsEnabled = "False";
|
|
|
if (FrontFileIsCheck == "True")
|
|
|
{
|
|
|
- FilePathName = savefilename + FileNameDeimiterText + FileNameLabelText;
|
|
|
-
|
|
|
+ FilePathName = savefilename + FileNameLabelText;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
-
|
|
|
- FilePathName = FileNameLabelText + FileNameDeimiterText + savefilename;
|
|
|
+ FilePathName = FileNameLabelText + savefilename;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+ #endregion
|
|
|
|
|
|
-
|
|
|
- public string Title =>"";
|
|
|
+ #region 构架行为
|
|
|
+ public string Title => "";
|
|
|
|
|
|
public event Action<IDialogResult> RequestClose;
|
|
|
|
|
@@ -486,10 +528,14 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
|
|
|
if (viewer != null && viewer.Document != null)
|
|
|
{
|
|
|
currentViewer = viewer;
|
|
|
- savefilepath = filepath;
|
|
|
+ document= viewer.Document;
|
|
|
savefilename = currentViewer.Document.FileName;
|
|
|
-
|
|
|
+ FilePathName = savefilename + "-" + "part" + ".pdf";
|
|
|
+ savefilepath = filepath.Replace(savefilename+".pdf","");
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
+ #endregion
|
|
|
}
|
|
|
}
|