FrmPdfInfo: Pages selector.

A simple textbox where you can put page numbers separated by comma. And ranges joined by dash.
This commit is contained in:
2019-10-27 09:59:08 +01:00
parent c3967dd439
commit 203f30e55c
2 changed files with 76 additions and 3 deletions

View File

@@ -47,6 +47,7 @@
this.btnGetField3 = new System.Windows.Forms.Button(); this.btnGetField3 = new System.Windows.Forms.Button();
this.txtField3 = new System.Windows.Forms.TextBox(); this.txtField3 = new System.Windows.Forms.TextBox();
this.btnGetColumn3 = new System.Windows.Forms.Button(); this.btnGetColumn3 = new System.Windows.Forms.Button();
this.txtPages = new System.Windows.Forms.TextBox();
this.SuspendLayout(); this.SuspendLayout();
// //
// lblOutputs // lblOutputs
@@ -237,11 +238,20 @@
this.btnGetColumn3.UseVisualStyleBackColor = true; this.btnGetColumn3.UseVisualStyleBackColor = true;
this.btnGetColumn3.Click += new System.EventHandler(this.btnGetColumn3_Click); this.btnGetColumn3.Click += new System.EventHandler(this.btnGetColumn3_Click);
// //
// txtPages
//
this.txtPages.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.txtPages.Location = new System.Drawing.Point(397, 82);
this.txtPages.Name = "txtPages";
this.txtPages.Size = new System.Drawing.Size(75, 20);
this.txtPages.TabIndex = 27;
//
// FrmPdfInfo // FrmPdfInfo
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(484, 461); this.ClientSize = new System.Drawing.Size(484, 461);
this.Controls.Add(this.txtPages);
this.Controls.Add(this.btnHasText3); this.Controls.Add(this.btnHasText3);
this.Controls.Add(this.btnGetField3); this.Controls.Add(this.btnGetField3);
this.Controls.Add(this.txtField3); this.Controls.Add(this.txtField3);
@@ -291,5 +301,6 @@
private System.Windows.Forms.Button btnGetField3; private System.Windows.Forms.Button btnGetField3;
private System.Windows.Forms.TextBox txtField3; private System.Windows.Forms.TextBox txtField3;
private System.Windows.Forms.Button btnGetColumn3; private System.Windows.Forms.Button btnGetColumn3;
private System.Windows.Forms.TextBox txtPages;
} }
} }

View File

@@ -191,6 +191,54 @@ namespace VAR.PdfTools.Workbench
Action_GetColumn(pdfPath, column); Action_GetColumn(pdfPath, column);
} }
private IEnumerable<int> GetSelectedPages(int maxPages)
{
string pages = txtPages.Text;
if (string.IsNullOrEmpty(pages))
{
return Enumerable.Range(1, maxPages);
}
string[] pagesParts;
if (pages.Contains(","))
{
pagesParts = pages.Split(',');
}
else
{
pagesParts = new string[] { pages };
}
List<int> listPages = new List<int>();
foreach (string part in pagesParts)
{
if (part.Contains("-"))
{
string[] range = part.Split('-');
if (range.Length == 2) {
int pageStart;
int pageEnd;
if(int.TryParse(range[0], out pageStart) && int.TryParse(range[1], out pageEnd))
{
listPages.AddRange(Enumerable.Range(pageStart, (pageEnd - pageStart) + 1));
}
}
}
else
{
int pageNum;
if(int.TryParse(part, out pageNum))
{
listPages.Add(pageNum);
}
}
}
if(listPages.Count == 0)
{
listPages.AddRange(Enumerable.Range(1, maxPages));
}
return listPages;
}
private void Action_HasText(string pdfPath, string text) private void Action_HasText(string pdfPath, string text)
{ {
if (System.IO.File.Exists(pdfPath) == false) if (System.IO.File.Exists(pdfPath) == false)
@@ -201,10 +249,13 @@ namespace VAR.PdfTools.Workbench
PdfDocument doc = PdfDocument.Load(pdfPath); PdfDocument doc = PdfDocument.Load(pdfPath);
IEnumerable<int> selectedPages = GetSelectedPages(doc.Pages.Count);
List<string> lines = new List<string>(); List<string> lines = new List<string>();
int pageNum = 1; int pageNum = 0;
foreach (PdfDocumentPage page in doc.Pages) foreach (PdfDocumentPage page in doc.Pages)
{ {
pageNum++;
if (selectedPages.Contains(pageNum) == false) { continue; }
PdfTextExtractor extractor = new PdfTextExtractor(page); PdfTextExtractor extractor = new PdfTextExtractor(page);
lines.Add(string.Format("Page({0}) : {1}", pageNum, Convert.ToString(extractor.HasText(text)))); lines.Add(string.Format("Page({0}) : {1}", pageNum, Convert.ToString(extractor.HasText(text))));
} }
@@ -221,9 +272,13 @@ namespace VAR.PdfTools.Workbench
PdfDocument doc = PdfDocument.Load(pdfPath); PdfDocument doc = PdfDocument.Load(pdfPath);
IEnumerable<int> selectedPages = GetSelectedPages(doc.Pages.Count);
var fieldData = new List<string>(); var fieldData = new List<string>();
int pageNum = 0;
foreach (PdfDocumentPage page in doc.Pages) foreach (PdfDocumentPage page in doc.Pages)
{ {
pageNum++;
if (selectedPages.Contains(pageNum) == false) { continue; }
PdfTextExtractor extractor = new PdfTextExtractor(page); PdfTextExtractor extractor = new PdfTextExtractor(page);
fieldData.Add(extractor.GetField(field)); fieldData.Add(extractor.GetField(field));
} }
@@ -240,9 +295,13 @@ namespace VAR.PdfTools.Workbench
PdfDocument doc = PdfDocument.Load(pdfPath); PdfDocument doc = PdfDocument.Load(pdfPath);
IEnumerable<int> selectedPages = GetSelectedPages(doc.Pages.Count);
var columnData = new List<string>(); var columnData = new List<string>();
int pageNum = 0;
foreach (PdfDocumentPage page in doc.Pages) foreach (PdfDocumentPage page in doc.Pages)
{ {
pageNum++;
if (selectedPages.Contains(pageNum) == false) { continue; }
PdfTextExtractor extractor = new PdfTextExtractor(page); PdfTextExtractor extractor = new PdfTextExtractor(page);
columnData.AddRange(extractor.GetColumn(column)); columnData.AddRange(extractor.GetColumn(column));
} }
@@ -265,9 +324,13 @@ namespace VAR.PdfTools.Workbench
lines.Add(string.Format("Filename : {0}", baseDocumentFilename)); lines.Add(string.Format("Filename : {0}", baseDocumentFilename));
lines.Add(string.Format("Number of Pages : {0}", doc.Pages.Count)); lines.Add(string.Format("Number of Pages : {0}", doc.Pages.Count));
int pageNumber = 1; IEnumerable<int> selectedPages = GetSelectedPages(doc.Pages.Count);
int pageNumber = 0;
foreach (PdfDocumentPage page in doc.Pages) foreach (PdfDocumentPage page in doc.Pages)
{ {
pageNumber++;
if (selectedPages.Contains(pageNumber) == false) { continue; }
PdfPageRenderer pdfPageRenderer = new PdfPageRenderer(page); PdfPageRenderer pdfPageRenderer = new PdfPageRenderer(page);
Bitmap bmp = pdfPageRenderer.Render(); Bitmap bmp = pdfPageRenderer.Render();
@@ -276,7 +339,6 @@ namespace VAR.PdfTools.Workbench
// Save image to disk // Save image to disk
string fileName = Path.Combine(baseDocumentPath, string.Format("{0}_{1:0000}.png", baseDocumentFilename, pageNumber)); string fileName = Path.Combine(baseDocumentPath, string.Format("{0}_{1:0000}.png", baseDocumentFilename, pageNumber));
bmp.Save(fileName, ImageFormat.Png); bmp.Save(fileName, ImageFormat.Png);
pageNumber++;
} }
txtOutput.Lines = lines.ToArray(); txtOutput.Lines = lines.ToArray();