Skip to content

Commit

Permalink
UPDATE: add page number position radio.
Browse files Browse the repository at this point in the history
  • Loading branch information
angela-1 committed Aug 31, 2019
1 parent 5c8c808 commit 60ba73f
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 36 deletions.
84 changes: 66 additions & 18 deletions pearblossom/Form3.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 25 additions & 2 deletions pearblossom/Form3.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace pearblossom
public partial class Form3 : Form
{
private PageNumberStyle pageNumberStyle = PageNumberStyle.Normal;
private PageNumberPos pageNumberPos = PageNumberPos.Center;
private Form1 parentForm;

public Form3(Form1 form)
Expand All @@ -22,7 +23,29 @@ public Form3(Form1 form)
}


public void AllRadio_CheckedChanged(object sender, EventArgs e)
public void PagePosRadio_CheckedChanged(object sender, EventArgs e)
{
if (!((RadioButton)sender).Checked)
{
return;
}

switch (((RadioButton)sender).Name)
{
case "posCenter":
pageNumberPos = PageNumberPos.Center;
break;
case "posCorner":
pageNumberPos = PageNumberPos.Corner;
break;
default:
pageNumberPos = PageNumberPos.Center;
break;
}
}


public void PageStyleRadio_CheckedChanged(object sender, EventArgs e)
{
if (!((RadioButton)sender).Checked)
{
Expand Down Expand Up @@ -51,7 +74,7 @@ private void button2_Click(object sender, EventArgs e)
Console.WriteLine("style" + this.pageNumberStyle);
if (parentForm.srcFile != "")
{
PageNumber pageNumber = new PageNumber(parentForm.srcFile, pageNumberStyle);
PageNumber pageNumber = new PageNumber(parentForm.srcFile, pageNumberStyle, pageNumberPos);
pageNumber.AddPageNumber();

parentForm.ShowStatus("添加页码成功");
Expand Down
12 changes: 1 addition & 11 deletions pearblossom/MergeDocumentUtil.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,13 +119,6 @@ private static string GetDestFilename(string filePath)
return Path.Combine(dest, newFile);
}

private static string GetRandomDestFilename(string filePath)
{
string newFile = Path.GetRandomFileName() + ".pdf";
string dest = Path.GetDirectoryName(filePath);
return Path.Combine(dest, newFile);
}

private static string DocxToPdf(string filePath, bool withBookmark)
{
if (!File.Exists(filePath))
Expand Down Expand Up @@ -284,10 +277,7 @@ private static void MergePdfsWithBookmarks(List<string> InFiles, string OutFile)

bookmarks.Add(rootBookmark);

pdf.Outlines = kids;



pdf.Outlines = bookmarks;

}
}
Expand Down
47 changes: 42 additions & 5 deletions pearblossom/PageNumber.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,27 @@ class PageNumber
private readonly string _src_file;
private readonly string _dst_file;
private readonly PageNumberStyle _pageNumberStyle;
private readonly PageNumberPos _pageNumberPos;

public PageNumber(string src_file, PageNumberStyle pageNumberStyle)
{
_src_file = src_file;
_pageNumberStyle = pageNumberStyle;
int ind = _src_file.LastIndexOf('\\');
string filename = System.IO.Path.GetFileNameWithoutExtension(_src_file);
_dst_file = _src_file.Substring(0, ind + 1) + filename + "_" + _pageNumberStyle.ToString() + "_pagenumber.pdf";
_dst_file = _src_file.Substring(0, ind + 1) + filename + "_" + _pageNumberStyle.ToString()
+ "_" + _pageNumberPos.ToString() + "_pagenumber.pdf";
}

public PageNumber(string src_file, PageNumberStyle pageNumberStyle, PageNumberPos pageNumberPos)
{
_src_file = src_file;
_pageNumberStyle = pageNumberStyle;
_pageNumberPos = pageNumberPos;
int ind = _src_file.LastIndexOf('\\');
string filename = Path.GetFileNameWithoutExtension(_src_file);
_dst_file = _src_file.Substring(0, ind + 1) + filename + "_" + _pageNumberStyle.ToString()
+ "_" + _pageNumberPos.ToString() + "_pagenumber.pdf";
}

private string GetPageNumber(int page, int totalPage)
Expand All @@ -56,13 +69,37 @@ private string GetPageNumber(int page, int totalPage)
return StringPage;
}

private string AddFormatedNumber(int totalPage, PdfStamper stamper, Font font)
private string AddFormatedNumber(int totalPage, PdfStamper stamper, Font font, PageNumberPos pos = PageNumberPos.Corner)
{

for (int i = 1; i <= totalPage; i++)
{
Rectangle rect = stamper.Reader.GetPageSizeWithRotation(i);
float xp = rect.Width / 2;

float xp;
float yp = 30.0f;
switch (pos)
{
case PageNumberPos.Center:
xp = rect.Width / 2;
break;
case PageNumberPos.Corner:
if (i % 2 == 0)
{
xp = rect.Width * 0.1f;
}
else
{
xp = rect.Width * 0.9f;
}
break;
default:
xp = rect.Width / 2;
break;
}

//float xp = rect.Width / 2;
//float yp = 30.0f;
float white_width = 100;
float white_height = 30;
float white_x = xp - white_width / 2;
Expand All @@ -71,7 +108,7 @@ private string AddFormatedNumber(int totalPage, PdfStamper stamper, Font font)
PdfContentByte canvas = stamper.GetOverContent(i);

// 画白色背景,遮住原来的内容
DrawWhiteBack(canvas, white_x, white_y, white_width, white_height);
DrawWhiteBack(canvas, white_x, white_y, white_width, white_height);

// 打页码
ColumnText.ShowTextAligned(canvas, Element.ALIGN_CENTER,
Expand Down Expand Up @@ -107,7 +144,7 @@ public string AddPageNumber()
break;
}

AddFormatedNumber(totalPage, stamper, numberFont);
AddFormatedNumber(totalPage, stamper, numberFont, _pageNumberPos);

stamper.Close();

Expand Down
6 changes: 6 additions & 0 deletions pearblossom/PageNumberStyle.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,10 @@ enum PageNumberStyle
Collection,
Total
}

enum PageNumberPos
{
Center,
Corner
}
}

0 comments on commit 60ba73f

Please sign in to comment.