From 53d07db9c02e82b35a20079f7f1473eb80a30c8d Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Sun, 27 Oct 2019 13:11:40 +0100 Subject: [PATCH] Use Rect class for size definition of TextElements and pages. --- VAR.PdfTools/Maths/Rect.cs | 25 +++++++++++++++++++++++++ VAR.PdfTools/PdfTextElement.cs | 13 +++++++++++++ VAR.PdfTools/PdfTextExtractor.cs | 12 ++++++++++++ VAR.PdfTools/VAR.PdfTools.csproj | 1 + 4 files changed, 51 insertions(+) create mode 100644 VAR.PdfTools/Maths/Rect.cs diff --git a/VAR.PdfTools/Maths/Rect.cs b/VAR.PdfTools/Maths/Rect.cs new file mode 100644 index 0000000..e03246a --- /dev/null +++ b/VAR.PdfTools/Maths/Rect.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VAR.PdfTools.Maths +{ + public class Rect + { + public double XMin { get; set; } + public double XMax { get; set; } + public double YMin { get; set; } + public double YMax { get; set; } + + public void Add(Rect rect) + { + if (rect.XMax > XMax) { XMax = rect.XMax; } + if (rect.YMax > YMax) { YMax = rect.YMax; } + if (rect.XMin < XMin) { XMin = rect.XMin; } + if (rect.YMin < YMin) { YMin = rect.YMin; } + } + + } +} diff --git a/VAR.PdfTools/PdfTextElement.cs b/VAR.PdfTools/PdfTextElement.cs index 916c246..c780b62 100644 --- a/VAR.PdfTools/PdfTextElement.cs +++ b/VAR.PdfTools/PdfTextElement.cs @@ -87,6 +87,19 @@ namespace VAR.PdfTools return Characters.Average(c => c.Width); } + public Rect GetRect() + { + double x = GetX(); + double y = GetY(); + return new Rect + { + XMin = x, + YMax = y, + XMax = x + VisibleWidth, + YMin = y - VisibleHeight, + }; + } + #endregion } diff --git a/VAR.PdfTools/PdfTextExtractor.cs b/VAR.PdfTools/PdfTextExtractor.cs index 2df7519..a065031 100644 --- a/VAR.PdfTools/PdfTextExtractor.cs +++ b/VAR.PdfTools/PdfTextExtractor.cs @@ -652,6 +652,18 @@ namespace VAR.PdfTools #region Public methods + public Rect GetRect() + { + Rect rect = null; + foreach (PdfTextElement textElement in _textElements) + { + Rect elementRect = textElement.GetRect(); + if (rect == null) { rect = elementRect; } + rect.Add(elementRect); + } + return rect; + } + public List GetColumnAsStrings(string column, bool fuzzy =true) { PdfTextElement columnHead = FindElementByText(column, fuzzy); diff --git a/VAR.PdfTools/VAR.PdfTools.csproj b/VAR.PdfTools/VAR.PdfTools.csproj index fa528c5..ca0fd9d 100644 --- a/VAR.PdfTools/VAR.PdfTools.csproj +++ b/VAR.PdfTools/VAR.PdfTools.csproj @@ -63,6 +63,7 @@ +