diff --git a/VAR.PdfTools.Workbench/FrmPdfInfo.Designer.cs b/VAR.PdfTools.Workbench/FrmPdfInfo.Designer.cs index ee2f8cc..e80f53a 100644 --- a/VAR.PdfTools.Workbench/FrmPdfInfo.Designer.cs +++ b/VAR.PdfTools.Workbench/FrmPdfInfo.Designer.cs @@ -47,6 +47,7 @@ this.btnGetField3 = new System.Windows.Forms.Button(); this.txtField3 = new System.Windows.Forms.TextBox(); this.btnGetColumn3 = new System.Windows.Forms.Button(); + this.txtPages = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // lblOutputs @@ -237,11 +238,20 @@ this.btnGetColumn3.UseVisualStyleBackColor = true; 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 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(484, 461); + this.Controls.Add(this.txtPages); this.Controls.Add(this.btnHasText3); this.Controls.Add(this.btnGetField3); this.Controls.Add(this.txtField3); @@ -291,5 +301,6 @@ private System.Windows.Forms.Button btnGetField3; private System.Windows.Forms.TextBox txtField3; private System.Windows.Forms.Button btnGetColumn3; + private System.Windows.Forms.TextBox txtPages; } } \ No newline at end of file diff --git a/VAR.PdfTools.Workbench/FrmPdfInfo.cs b/VAR.PdfTools.Workbench/FrmPdfInfo.cs index 24fe904..62ddcdd 100644 --- a/VAR.PdfTools.Workbench/FrmPdfInfo.cs +++ b/VAR.PdfTools.Workbench/FrmPdfInfo.cs @@ -191,6 +191,54 @@ namespace VAR.PdfTools.Workbench Action_GetColumn(pdfPath, column); } + private IEnumerable 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 listPages = new List(); + 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) { if (System.IO.File.Exists(pdfPath) == false) @@ -201,10 +249,13 @@ namespace VAR.PdfTools.Workbench PdfDocument doc = PdfDocument.Load(pdfPath); + IEnumerable selectedPages = GetSelectedPages(doc.Pages.Count); List lines = new List(); - int pageNum = 1; + int pageNum = 0; foreach (PdfDocumentPage page in doc.Pages) { + pageNum++; + if (selectedPages.Contains(pageNum) == false) { continue; } PdfTextExtractor extractor = new PdfTextExtractor(page); 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); + IEnumerable selectedPages = GetSelectedPages(doc.Pages.Count); var fieldData = new List(); + int pageNum = 0; foreach (PdfDocumentPage page in doc.Pages) { + pageNum++; + if (selectedPages.Contains(pageNum) == false) { continue; } PdfTextExtractor extractor = new PdfTextExtractor(page); fieldData.Add(extractor.GetField(field)); } @@ -240,9 +295,13 @@ namespace VAR.PdfTools.Workbench PdfDocument doc = PdfDocument.Load(pdfPath); + IEnumerable selectedPages = GetSelectedPages(doc.Pages.Count); var columnData = new List(); + int pageNum = 0; foreach (PdfDocumentPage page in doc.Pages) { + pageNum++; + if (selectedPages.Contains(pageNum) == false) { continue; } PdfTextExtractor extractor = new PdfTextExtractor(page); columnData.AddRange(extractor.GetColumn(column)); } @@ -265,9 +324,13 @@ namespace VAR.PdfTools.Workbench lines.Add(string.Format("Filename : {0}", baseDocumentFilename)); lines.Add(string.Format("Number of Pages : {0}", doc.Pages.Count)); - int pageNumber = 1; + IEnumerable selectedPages = GetSelectedPages(doc.Pages.Count); + int pageNumber = 0; foreach (PdfDocumentPage page in doc.Pages) { + pageNumber++; + if (selectedPages.Contains(pageNumber) == false) { continue; } + PdfPageRenderer pdfPageRenderer = new PdfPageRenderer(page); Bitmap bmp = pdfPageRenderer.Render(); @@ -276,7 +339,6 @@ namespace VAR.PdfTools.Workbench // Save image to disk string fileName = Path.Combine(baseDocumentPath, string.Format("{0}_{1:0000}.png", baseDocumentFilename, pageNumber)); bmp.Save(fileName, ImageFormat.Png); - pageNumber++; } txtOutput.Lines = lines.ToArray();