using System;
using System.Collections.Generic;
using System.Diagnostics;
using ComPDFKitViewer.PdfViewer;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Documents;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using ComPDFKit.PDFDocument;
using PDF_Master.Model.EditTools.Bates;
namespace PDF_Master.Helper
{
public static class HomePageEditHelper
{
///
/// 获取所需要分文档份数
///
/// 文档总页数
/// 平均几页分为一个文档
/// 最后文档的页数的引用 例如11页文档每3页为一份PDF,3,3,3,2,remainder=2
///
public static int AverageSplitPages(int pagecontent, int averagepage, ref int remainder)
{
if (pagecontent <= 0)
{
remainder = 0;
return 0;
}
if (pagecontent <= averagepage)
{
remainder = pagecontent;
return 1;
}
if (pagecontent > averagepage)
{
if (pagecontent % averagepage == 0)
{
remainder = 0;
return pagecontent / averagepage;
}
remainder = pagecontent % averagepage;
return (pagecontent / averagepage) + 1;
}
remainder = 0;
return -1;
}
///
/// 获取平均每个文档的页数
///
/// 文档总页数
/// 平均几页分为一个文档
/// 引用,截至第几位文档比后面文档多一 例如11页文档 分为3份 4,4,3 remainder为2 第一个文档和第二文档比后续文档多一
///
public static int AverageSplitDocs(int pagecontent, int averagedoc, ref int remainder)
{
if (pagecontent <= 0)
{
remainder = 0;
return 0;
}
if (pagecontent <= averagedoc)
{
remainder = 0;
return 1;
}
if (pagecontent > averagedoc)
{
remainder = pagecontent % averagedoc;
return pagecontent / averagedoc;
}
return 0;
}
public static void GetPagerange(string PageRangeSelectIndex, CPDFViewer currentViewer, ref string pageRange, string pageRangeText, bool currentpage = false, string currentPageRange="1")
{
if (!currentpage)
{
if (PageRangeSelectIndex == "0")
{
pageRange = "1-" + currentViewer.Document.PageCount.ToString();
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
else if (PageRangeSelectIndex == "1")
{
pageRange = "1";
for (int i = 3; i <= currentViewer.Document.PageCount; i += 2)
pageRange = pageRange + "," + i;
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
else if (PageRangeSelectIndex == "2")
{
pageRange = "2";
for (int i = 4; i <= currentViewer.Document.PageCount; i += 2)
pageRange = pageRange + "," + i;
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
else if (PageRangeSelectIndex == "3")
{
if (pageRangeText != "")
{
pageRange = pageRangeText;
}
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
else { return; }
}
else
{
if (PageRangeSelectIndex == "0")
{
pageRange = "1-" + currentViewer.Document.PageCount.ToString();
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
if (PageRangeSelectIndex == "1")
{
pageRange = currentPageRange;
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
else if (PageRangeSelectIndex == "2")
{
pageRange = "1";
for (int i = 3; i <= currentViewer.Document.PageCount; i += 2)
pageRange = pageRange + "," + i;
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
else if (PageRangeSelectIndex == "3")
{
pageRange = "2";
for (int i = 4; i <= currentViewer.Document.PageCount; i += 2)
pageRange = pageRange + "," + i;
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
else if (PageRangeSelectIndex == "4")
{
if (pageRangeText != "")
{
pageRange = pageRangeText;
}
Trace.WriteLine(" extractModel.PageRange" + pageRange);
}
else { return; }
}
}
public static string UpDataPageRange(int pagecount,string pagerange) {
List PageIndexLists = new List();
string str = "";
if(CommonHelper.GetPagesInRange(ref PageIndexLists, pagerange, 9999, new char[] { ',' }, new char[] { '-' }))
{
foreach (var PageIndex in PageIndexLists) {
int pageindex = PageIndex + 1;
if (pageindex<= pagecount)
{
str = str + pageindex.ToString();
str = str + ",";
}
}
if(str=="")
return str;
return str.Remove(str.LastIndexOf(","),1);
}
return str;
}
public static string ReverseDate(string str,CPDFDocument Document)
{
string yyyy = DateTime.Now.ToString("yyyy");
string yy = DateTime.Now.ToString("yy");
string mm = DateTime.Now.ToString("MM");
string m = DateTime.Now.ToString("%M");
string dd = DateTime.Now.ToString("dd");
string d = DateTime.Now.ToString("%d");
str = str.Replace("<>", m + "/" + d)
.Replace("<>", m + "/" + d + "/" + yy)
.Replace("<>", m + "/" + d + "/" + yyyy)
.Replace("<>", mm + "/" + dd + "/" + yy)
.Replace("<>", mm + "/" + dd + "/" + yyyy)
.Replace("<>", d + "/" + m + "/" + yy)
.Replace("<>", d + "/" + m + "/" + yyyy)
.Replace("<>", dd + "/" + mm + "/" + yy)
.Replace("<>", dd + "/" + mm + "/" + yyyy)
.Replace("<>", mm + "/" + yy)
.Replace("<>", mm + "/" + yyyy)
.Replace("<>", m + "." + d + "." + yy)
.Replace("<>", m + "." + d + "." + yyyy)
.Replace("<>", mm + "." + dd + "." + yy)
.Replace("<>", mm + "." + dd + "." + yyyy)
.Replace("<>", mm + "." + yy)
.Replace("<>", mm + "." + yyyy)
.Replace("<>", d + "." + m + "." + yy)
.Replace("<>", d + "." + m + "." + yyyy)
.Replace("<>", dd + "." + mm + "." + yy)
.Replace("<>", dd + "." + mm + "." + yyyy)
.Replace("<>", yy + "-" + mm + "-" + dd)
.Replace("<>", yyyy + "-" + mm + "-" + dd)
.Replace("<<1 of n>>", "<<1>>" + " of " + Document.PageCount)
.Replace("<<1/n>>", "<<1>>" + "/" + Document.PageCount)
.Replace("<>", "Page" + "<<1>>")
.Replace("<>", "Page " + "<<1>>" + " of " + Document.PageCount);
return str;
}
}
}