├── .gitattributes
├── .gitignore
├── DocumentLayoutAnalysis
├── DlaViewer
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── AssemblyInfo.cs
│ ├── CustomPlotController.cs
│ ├── Distribution.cs
│ ├── DlaViewer.csproj
│ ├── MainViewModel.cs
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.cs
│ ├── PdfDocumentModel.cs
│ └── PdfPageModel.cs
├── DocumentLayoutAnalysis.sln
├── DocumentLayoutAnalysis
│ ├── App.config
│ ├── DocumentLayoutAnalysis.csproj
│ ├── Export
│ │ └── Scemas
│ │ │ ├── alto-4-1.xsd
│ │ │ ├── pagecontent.xsd
│ │ │ └── tei_ocr.rng
│ ├── MarkedContentTest.cs
│ ├── PageExportExample.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RamerDouglasPeucker.cs
│ ├── Resources
│ │ ├── README.md
│ │ └── Samples
│ │ │ ├── 104-7-3.pdf
│ │ │ ├── APISmap1.1.old.xml
│ │ │ ├── APISmap1.1.xml
│ │ │ ├── APISmap1.1_bw_raw.png
│ │ │ ├── APISmap1.1_raw.png
│ │ │ ├── APISmap1.1default.xml
│ │ │ ├── APISmap1.pdf
│ │ │ ├── Random 2 Columns Lists Chart.1.alto.xml
│ │ │ ├── Random 2 Columns Lists Chart.1.xml
│ │ │ ├── Random 2 Columns Lists Chart.1_bw_raw.png
│ │ │ ├── Random 2 Columns Lists Chart.1_raw.png
│ │ │ ├── Random 2 Columns Lists Chart.pdf
│ │ │ ├── Random 2 Columns Lists Chart_PDF-A.pdf
│ │ │ ├── excel.pdf
│ │ │ ├── excel_2.pdf
│ │ │ ├── oxyplot.pdf
│ │ │ ├── oxyplot_2.pdf
│ │ │ ├── oxyplot_3.pdf
│ │ │ ├── oxyplot_4.pdf
│ │ │ ├── oxyplot_5.pdf
│ │ │ ├── oxyplot_6.pdf
│ │ │ ├── oxyplot_7.pdf
│ │ │ ├── rotated block2.1.xml
│ │ │ ├── rotated block2.1_bw_raw.png
│ │ │ ├── rotated block2.1_raw.png
│ │ │ └── rotated block2.pdf
│ ├── doc
│ │ ├── docstrum example 1.png
│ │ ├── docstrum example 2.png
│ │ ├── nearest neighbour word example v2.png
│ │ ├── rxyc example.png
│ │ ├── viewer.png
│ │ ├── xy cut.gif
│ │ └── xy cut_small.gif
│ └── packages.config
└── ImageConverter
│ ├── ImageConverter.csproj
│ ├── PdfImageConverter.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── README.md
│ ├── Structures.cs
│ ├── x64
│ └── libmupdf.dll
│ └── x86
│ └── libmupdf.dll
└── README.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.suo
8 | *.user
9 | *.userosscache
10 | *.sln.docstates
11 |
12 | # User-specific files (MonoDevelop/Xamarin Studio)
13 | *.userprefs
14 |
15 | # Build results
16 | [Dd]ebug/
17 | [Dd]ebugPublic/
18 | [Rr]elease/
19 | [Rr]eleases/
20 | x64/
21 | x86/
22 | bld/
23 | [Bb]in/
24 | [Oo]bj/
25 | [Ll]og/
26 |
27 | # Visual Studio 2015/2017 cache/options directory
28 | .vs/
29 | # Uncomment if you have tasks that create the project's static files in wwwroot
30 | #wwwroot/
31 |
32 | # Visual Studio 2017 auto generated files
33 | Generated\ Files/
34 |
35 | # MSTest test Results
36 | [Tt]est[Rr]esult*/
37 | [Bb]uild[Ll]og.*
38 |
39 | # NUNIT
40 | *.VisualState.xml
41 | TestResult.xml
42 |
43 | # Build Results of an ATL Project
44 | [Dd]ebugPS/
45 | [Rr]eleasePS/
46 | dlldata.c
47 |
48 | # Benchmark Results
49 | BenchmarkDotNet.Artifacts/
50 |
51 | # .NET Core
52 | project.lock.json
53 | project.fragment.lock.json
54 | artifacts/
55 | **/Properties/launchSettings.json
56 |
57 | # StyleCop
58 | StyleCopReport.xml
59 |
60 | # Files built by Visual Studio
61 | *_i.c
62 | *_p.c
63 | *_i.h
64 | *.ilk
65 | *.meta
66 | *.obj
67 | *.iobj
68 | *.pch
69 | *.pdb
70 | *.ipdb
71 | *.pgc
72 | *.pgd
73 | *.rsp
74 | *.sbr
75 | *.tlb
76 | *.tli
77 | *.tlh
78 | *.tmp
79 | *.tmp_proj
80 | *.log
81 | *.vspscc
82 | *.vssscc
83 | .builds
84 | *.pidb
85 | *.svclog
86 | *.scc
87 |
88 | # Chutzpah Test files
89 | _Chutzpah*
90 |
91 | # Visual C++ cache files
92 | ipch/
93 | *.aps
94 | *.ncb
95 | *.opendb
96 | *.opensdf
97 | *.sdf
98 | *.cachefile
99 | *.VC.db
100 | *.VC.VC.opendb
101 |
102 | # Visual Studio profiler
103 | *.psess
104 | *.vsp
105 | *.vspx
106 | *.sap
107 |
108 | # Visual Studio Trace Files
109 | *.e2e
110 |
111 | # TFS 2012 Local Workspace
112 | $tf/
113 |
114 | # Guidance Automation Toolkit
115 | *.gpState
116 |
117 | # ReSharper is a .NET coding add-in
118 | _ReSharper*/
119 | *.[Rr]e[Ss]harper
120 | *.DotSettings.user
121 |
122 | # JustCode is a .NET coding add-in
123 | .JustCode
124 |
125 | # TeamCity is a build add-in
126 | _TeamCity*
127 |
128 | # DotCover is a Code Coverage Tool
129 | *.dotCover
130 |
131 | # AxoCover is a Code Coverage Tool
132 | .axoCover/*
133 | !.axoCover/settings.json
134 |
135 | # Visual Studio code coverage results
136 | *.coverage
137 | *.coveragexml
138 |
139 | # NCrunch
140 | _NCrunch_*
141 | .*crunch*.local.xml
142 | nCrunchTemp_*
143 |
144 | # MightyMoose
145 | *.mm.*
146 | AutoTest.Net/
147 |
148 | # Web workbench (sass)
149 | .sass-cache/
150 |
151 | # Installshield output folder
152 | [Ee]xpress/
153 |
154 | # DocProject is a documentation generator add-in
155 | DocProject/buildhelp/
156 | DocProject/Help/*.HxT
157 | DocProject/Help/*.HxC
158 | DocProject/Help/*.hhc
159 | DocProject/Help/*.hhk
160 | DocProject/Help/*.hhp
161 | DocProject/Help/Html2
162 | DocProject/Help/html
163 |
164 | # Click-Once directory
165 | publish/
166 |
167 | # Publish Web Output
168 | *.[Pp]ublish.xml
169 | *.azurePubxml
170 | # Note: Comment the next line if you want to checkin your web deploy settings,
171 | # but database connection strings (with potential passwords) will be unencrypted
172 | *.pubxml
173 | *.publishproj
174 |
175 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
176 | # checkin your Azure Web App publish settings, but sensitive information contained
177 | # in these scripts will be unencrypted
178 | PublishScripts/
179 |
180 | # NuGet Packages
181 | *.nupkg
182 | # The packages folder can be ignored because of Package Restore
183 | **/[Pp]ackages/*
184 | # except build/, which is used as an MSBuild target.
185 | !**/[Pp]ackages/build/
186 | # Uncomment if necessary however generally it will be regenerated when needed
187 | #!**/[Pp]ackages/repositories.config
188 | # NuGet v3's project.json files produces more ignorable files
189 | *.nuget.props
190 | *.nuget.targets
191 |
192 | # Microsoft Azure Build Output
193 | csx/
194 | *.build.csdef
195 |
196 | # Microsoft Azure Emulator
197 | ecf/
198 | rcf/
199 |
200 | # Windows Store app package directories and files
201 | AppPackages/
202 | BundleArtifacts/
203 | Package.StoreAssociation.xml
204 | _pkginfo.txt
205 | *.appx
206 |
207 | # Visual Studio cache files
208 | # files ending in .cache can be ignored
209 | *.[Cc]ache
210 | # but keep track of directories ending in .cache
211 | !*.[Cc]ache/
212 |
213 | # Others
214 | ClientBin/
215 | ~$*
216 | *~
217 | *.dbmdl
218 | *.dbproj.schemaview
219 | *.jfm
220 | *.pfx
221 | *.publishsettings
222 | orleans.codegen.cs
223 |
224 | # Including strong name files can present a security risk
225 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
226 | #*.snk
227 |
228 | # Since there are multiple workflows, uncomment next line to ignore bower_components
229 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
230 | #bower_components/
231 |
232 | # RIA/Silverlight projects
233 | Generated_Code/
234 |
235 | # Backup & report files from converting an old project file
236 | # to a newer Visual Studio version. Backup files are not needed,
237 | # because we have git ;-)
238 | _UpgradeReport_Files/
239 | Backup*/
240 | UpgradeLog*.XML
241 | UpgradeLog*.htm
242 | ServiceFabricBackup/
243 | *.rptproj.bak
244 |
245 | # SQL Server files
246 | *.mdf
247 | *.ldf
248 | *.ndf
249 |
250 | # Business Intelligence projects
251 | *.rdl.data
252 | *.bim.layout
253 | *.bim_*.settings
254 | *.rptproj.rsuser
255 |
256 | # Microsoft Fakes
257 | FakesAssemblies/
258 |
259 | # GhostDoc plugin setting file
260 | *.GhostDoc.xml
261 |
262 | # Node.js Tools for Visual Studio
263 | .ntvs_analysis.dat
264 | node_modules/
265 |
266 | # Visual Studio 6 build log
267 | *.plg
268 |
269 | # Visual Studio 6 workspace options file
270 | *.opt
271 |
272 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
273 | *.vbw
274 |
275 | # Visual Studio LightSwitch build output
276 | **/*.HTMLClient/GeneratedArtifacts
277 | **/*.DesktopClient/GeneratedArtifacts
278 | **/*.DesktopClient/ModelManifest.xml
279 | **/*.Server/GeneratedArtifacts
280 | **/*.Server/ModelManifest.xml
281 | _Pvt_Extensions
282 |
283 | # Paket dependency manager
284 | .paket/paket.exe
285 | paket-files/
286 |
287 | # FAKE - F# Make
288 | .fake/
289 |
290 | # JetBrains Rider
291 | .idea/
292 | *.sln.iml
293 |
294 | # CodeRush
295 | .cr/
296 |
297 | # Python Tools for Visual Studio (PTVS)
298 | __pycache__/
299 | *.pyc
300 |
301 | # Cake - Uncomment if you are using it
302 | # tools/**
303 | # !tools/packages.config
304 |
305 | # Tabs Studio
306 | *.tss
307 |
308 | # Telerik's JustMock configuration file
309 | *.jmconfig
310 |
311 | # BizTalk build output
312 | *.btp.cs
313 | *.btm.cs
314 | *.odx.cs
315 | *.xsd.cs
316 |
317 | # OpenCover UI analysis results
318 | OpenCover/
319 |
320 | # Azure Stream Analytics local run output
321 | ASALocalRun/
322 |
323 | # MSBuild Binary and Structured Log
324 | *.binlog
325 |
326 | # NVidia Nsight GPU debugger configuration file
327 | *.nvuser
328 |
329 | # MFractors (Xamarin productivity tool) working folder
330 | .mfractor/
331 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 |
9 | namespace DlaViewer
10 | {
11 | ///
12 | /// Interaction logic for App.xaml
13 | ///
14 | public partial class App : Application
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/CustomPlotController.cs:
--------------------------------------------------------------------------------
1 | namespace DlaViewer
2 | {
3 | using OxyPlot;
4 |
5 | public class CustomPlotController : PlotController
6 | {
7 | private readonly OxyModifierKeys _zoomOxyModifierKeys = OxyModifierKeys.Control;
8 |
9 | public CustomPlotController() : base()
10 | {
11 | this.BindMouseDown(OxyMouseButton.Left, PanZoomAt);
12 | this.BindMouseEnter(OxyPlot.PlotCommands.HoverSnapTrack);
13 | this.BindMouseDown(OxyMouseButton.Left, _zoomOxyModifierKeys, OxyPlot.PlotCommands.ZoomRectangle);
14 | this.BindMouseDown(OxyMouseButton.Left, OxyModifierKeys.None, 2, OxyPlot.PlotCommands.ResetAt);
15 |
16 | this.UnbindMouseDown(OxyMouseButton.Middle);
17 | this.UnbindMouseDown(OxyMouseButton.Right);
18 | this.UnbindKeyDown(OxyKey.C, OxyModifierKeys.Control | OxyModifierKeys.Alt);
19 | this.UnbindKeyDown(OxyKey.R, OxyModifierKeys.Control | OxyModifierKeys.Alt);
20 | this.UnbindKeyDown(OxyKey.Up);
21 | this.UnbindKeyDown(OxyKey.Down);
22 | this.UnbindKeyDown(OxyKey.Left);
23 | this.UnbindKeyDown(OxyKey.Right);
24 |
25 | this.UnbindKeyDown(OxyKey.Up, OxyModifierKeys.Control);
26 | this.UnbindKeyDown(OxyKey.Down, OxyModifierKeys.Control);
27 | this.UnbindKeyDown(OxyKey.Left, OxyModifierKeys.Control);
28 | this.UnbindKeyDown(OxyKey.Right, OxyModifierKeys.Control);
29 | this.UnbindMouseWheel();
30 | }
31 |
32 | private static readonly IViewCommand PanZoomAt = new DelegatePlotCommand(
33 | (view, controller, args) => controller.AddMouseManipulator(view, new PanZoomManipulator(view), args));
34 | }
35 |
36 | public class PanZoomManipulator : MouseManipulator
37 | {
38 | public PanZoomManipulator(IPlotView plotView) : base(plotView)
39 | { }
40 |
41 | private ScreenPoint PreviousPosition { get; set; }
42 | private DataPoint PreviousPositionShortTerm { get; set; }
43 | private bool IsPanEnabled { get; set; }
44 |
45 | public override void Completed(OxyMouseEventArgs e)
46 | {
47 | base.Completed(e);
48 |
49 | if (!this.IsPanEnabled)
50 | {
51 | return;
52 | }
53 |
54 | this.View.SetCursorType(CursorType.Default);
55 | e.Handled = true;
56 | }
57 |
58 | public override void Delta(OxyMouseEventArgs e)
59 | {
60 | base.Delta(e);
61 | if (this.PreviousPosition.Equals(e.Position))
62 | {
63 | e.Handled = true;
64 | return;
65 | }
66 |
67 | if (!this.IsPanEnabled)
68 | {
69 | e.Handled = true;
70 | return;
71 | }
72 |
73 | DataPoint current = this.InverseTransform(e.Position.X, e.Position.Y);
74 | const double inScale = 1.03;
75 | const double outScale = 0.97;
76 |
77 | if (this.XAxis != null && this.YAxis != null)
78 | {
79 | // this is pan
80 | this.XAxis.Pan(this.PreviousPosition, e.Position);
81 | this.YAxis.Pan(this.PreviousPosition, e.Position);
82 | }
83 | else
84 | {
85 | double scale;
86 | // this is zoom
87 | if (this.YAxis != null && this.YAxis.IsZoomEnabled)
88 | {
89 | if (this.PreviousPositionShortTerm.Y - current.Y > 0)
90 | {
91 | scale = outScale;
92 | }
93 | else if (this.PreviousPositionShortTerm.Y - current.Y < 0)
94 | {
95 | scale = inScale;
96 | }
97 | else
98 | {
99 | scale = 1;
100 | }
101 |
102 | PreviousPositionShortTerm = this.InverseTransform(e.Position.X, e.Position.Y);
103 | this.YAxis.ZoomAt(scale, current.Y);
104 | }
105 |
106 | if (this.XAxis != null && this.XAxis.IsZoomEnabled)
107 | {
108 | if (this.PreviousPositionShortTerm.X - current.X > 0)
109 | {
110 | scale = inScale;
111 | }
112 | else if (this.PreviousPositionShortTerm.X - current.X < 0)
113 | {
114 | scale = outScale;
115 | }
116 | else
117 | {
118 | scale = 1;
119 | }
120 | PreviousPositionShortTerm = this.InverseTransform(e.Position.X, e.Position.Y);
121 | this.XAxis.ZoomAt(scale, current.X);
122 | }
123 | }
124 | this.PlotView.InvalidatePlot(false);
125 | this.PreviousPosition = e.Position;
126 | e.Handled = true;
127 | }
128 |
129 | public override void Started(OxyMouseEventArgs e)
130 | {
131 | base.Started(e);
132 | this.PreviousPosition = e.Position;
133 |
134 | this.IsPanEnabled = (this.XAxis != null && this.XAxis.IsPanEnabled)
135 | || (this.YAxis != null && this.YAxis.IsPanEnabled);
136 |
137 | if (this.IsPanEnabled)
138 | {
139 | if (this.XAxis != null && this.YAxis != null)
140 | {
141 | this.View.SetCursorType(CursorType.Pan);
142 | }
143 | else if (this.XAxis == null && this.YAxis != null)
144 | {
145 | this.View.SetCursorType(CursorType.ZoomVertical);
146 | }
147 | else if (this.XAxis != null && this.YAxis == null)
148 | {
149 | this.View.SetCursorType(CursorType.ZoomHorizontal);
150 | }
151 | e.Handled = true;
152 | }
153 | }
154 | }
155 | }
156 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/Distribution.cs:
--------------------------------------------------------------------------------
1 | namespace DlaViewer
2 | {
3 | using OxyPlot;
4 | using OxyPlot.Axes;
5 | using OxyPlot.Series;
6 | using System;
7 | using System.Collections.Generic;
8 | using System.Linq;
9 | using UglyToad.PdfPig.DocumentLayoutAnalysis;
10 |
11 | public class Distribution
12 | {
13 | public IReadOnlyList Values { get; }
14 |
15 | public double Mode { get; }
16 |
17 | public double Average { get; }
18 |
19 | public int BinLength { get; }
20 |
21 | public Dictionary> Bins { get; set; }
22 |
23 | public Distribution(IEnumerable values, int binLength = 1)
24 | {
25 | if (binLength <= 0)
26 | {
27 | throw new ArgumentException();
28 | }
29 |
30 | Values = values.Select(x => Math.Round(x, 5)).ToList();
31 | Average = Values.Average();
32 | Mode = Values.Mode();
33 | BinLength = binLength;
34 |
35 | var max = (int)Math.Ceiling(Values.Max());
36 | if (max == 0)
37 | {
38 | max = binLength;
39 | }
40 | else
41 | {
42 | binLength = binLength > max ? max : binLength;
43 | }
44 |
45 | var bins = Enumerable.Range(0, (int)Math.Ceiling(max / (double)binLength) + 1)
46 | .Select(x => x * binLength)
47 | .ToDictionary(x => x, _ => new List());
48 |
49 | foreach (var value in Values)
50 | {
51 | var key = bins.Keys.ElementAt((int)Math.Floor(value / binLength));
52 | bins[key].Add(value);
53 | }
54 |
55 | Bins = bins;
56 | }
57 |
58 | public PlotModel GetPlotModel(string title = "", double titleFontSize = 12)
59 | {
60 | var distPlotModel = new PlotModel { Title = title, IsLegendVisible = true, TitleFontSize = titleFontSize };
61 | distPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = 0.0 });
62 |
63 | var histoSeries = new HistogramSeries() { FillColor = OxyColors.Blue, StrokeThickness = 1, StrokeColor = OxyColors.Black, RenderInLegend = false };
64 | double peakDist = double.NegativeInfinity;
65 | foreach (var bin in Bins)
66 | {
67 | double pct = bin.Value.Count / (double)Values.Count;
68 | if (pct > peakDist) peakDist = pct;
69 | double start = bin.Key;
70 | double end = bin.Key + BinLength - 10e-7;
71 | histoSeries.Items.Add(new HistogramItem(start, end, pct, bin.Value.Count));
72 | }
73 | distPlotModel.Series.Add(histoSeries);
74 |
75 | // plot average
76 | ScatterSeries averageSeries = new ScatterSeries() { MarkerType = MarkerType.Diamond, MarkerFill = OxyColors.Red, MarkerSize = 5, Title = "Average" };
77 | averageSeries.Points.Add(new ScatterPoint(Average, peakDist / 2.0));
78 | distPlotModel.Series.Add(averageSeries);
79 |
80 | if (!double.IsNaN(Mode))
81 | {
82 | // plot mode
83 | ScatterSeries modeSeries = new ScatterSeries() { MarkerType = MarkerType.Circle, MarkerFill = OxyColors.Orange, MarkerSize = 5, Title = "Mode" };
84 | modeSeries.Points.Add(new ScatterPoint(Mode, peakDist / 2.0));
85 | distPlotModel.Series.Add(modeSeries);
86 | }
87 |
88 | return distPlotModel;
89 | }
90 | }
91 |
92 | /*
93 | public class DistributionBin
94 | {
95 | ///
96 | /// Included
97 | ///
98 | public int Start { get; }
99 |
100 | ///
101 | /// Excluded
102 | ///
103 | public int End { get; }
104 |
105 | public double Average;
106 |
107 | public double Mode;
108 |
109 | public DistributionBin(int start, int end, IEnumerable values = null)
110 | {
111 |
112 | }
113 | }
114 | */
115 | }
116 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/DlaViewer.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | WinExe
5 | netcoreapp3.1
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/MainViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace DlaViewer
2 | {
3 | using ImageConverter;
4 | using OxyPlot;
5 | using OxyPlot.Annotations;
6 | using OxyPlot.Axes;
7 | using OxyPlot.Series;
8 | using System;
9 | using System.Collections.Generic;
10 | using System.Collections.ObjectModel;
11 | using System.ComponentModel;
12 | using System.IO;
13 | using System.Linq;
14 | using UglyToad.PdfPig.Core;
15 | using static UglyToad.PdfPig.Core.PdfSubpath;
16 |
17 | public class MainViewModel : INotifyPropertyChanged, IDisposable
18 | {
19 | public PlotController CustomController { get; }
20 |
21 | public string PdfPigVersion { get; set; }
22 |
23 | private PdfImageConverter _pdfImageConverter;
24 | private PdfDocumentModel _pdfDocumentModel;
25 |
26 | private PlotModel _pagePlotModel;
27 | private IList _currentSeries;
28 | private PlotModel _heightHistoPlotModel;
29 | private PlotModel _widthtHistoPlotModel;
30 |
31 | private int _numberOfPages;
32 | private int _currentPageNumber;
33 |
34 | public ObservableCollection WordExtractorList { get; }
35 | public ObservableCollection PageSegmenterList { get; }
36 |
37 | private PdfPageModel _pdfPageModel;
38 |
39 | private Type _wordExtractor;
40 | public Type WordExtractor
41 | {
42 | get
43 | {
44 | return _wordExtractor;
45 | }
46 |
47 | set
48 | {
49 | _wordExtractor = value;
50 | SetWordExtractor(value);
51 | this.RaisePropertyChanged(nameof(WordExtractor));
52 | }
53 | }
54 |
55 | public void SetWordExtractor(Type wordExtractor)
56 | {
57 | if (_pdfPageModel != null && wordExtractor != null)
58 | {
59 | _pdfPageModel.SetWordExtractor(wordExtractor);
60 |
61 | if (IsDisplayWords)
62 | {
63 | DisplayWords();
64 | }
65 |
66 | if (IsDisplayTextLines)
67 | {
68 | DisplayTextLines();
69 | }
70 |
71 | if (IsDisplayTextBlocks)
72 | {
73 | DisplayTextBlocks();
74 | }
75 | }
76 | }
77 |
78 | private Type _pageSegmenter;
79 | public Type PageSegmenter
80 | {
81 | get
82 | {
83 | return _pageSegmenter;
84 | }
85 |
86 | set
87 | {
88 | _pageSegmenter = value;
89 | SetPageSegmenter(value);
90 | this.RaisePropertyChanged(nameof(PageSegmenter));
91 | }
92 | }
93 |
94 | public void SetPageSegmenter(Type pageSegmenter)
95 | {
96 | if (_pdfPageModel != null && pageSegmenter != null)
97 | {
98 | _pdfPageModel.SetPageSegmenter(pageSegmenter);
99 | if (IsDisplayTextLines)
100 | {
101 | DisplayTextLines();
102 | }
103 |
104 | if (IsDisplayTextBlocks)
105 | {
106 | DisplayTextBlocks();
107 | }
108 | }
109 | }
110 |
111 | public void HidePagePlotModel()
112 | {
113 | _currentSeries = PagePlotModel?.Series.ToList();
114 | PagePlotModel?.Series.Clear();
115 | }
116 |
117 | public void ShowPagePlotModel()
118 | {
119 | if (_currentSeries != null)
120 | {
121 | _currentSeries.ToList().ForEach(s => PagePlotModel.Series.Add(s));
122 | PagePlotModel.InvalidatePlot(true);
123 | this.RaisePropertyChanged(nameof(PagePlotModel));
124 | }
125 | }
126 |
127 | public PlotModel PagePlotModel
128 | {
129 | get
130 | {
131 | return _pagePlotModel;
132 | }
133 |
134 | private set
135 | {
136 | _pagePlotModel = value;
137 | this.RaisePropertyChanged(nameof(PagePlotModel));
138 | }
139 | }
140 |
141 | public PlotModel HeightHistoPlotModel
142 | {
143 | get
144 | {
145 | return _heightHistoPlotModel;
146 | }
147 |
148 | private set
149 | {
150 | _heightHistoPlotModel = value;
151 | this.RaisePropertyChanged(nameof(HeightHistoPlotModel));
152 | }
153 | }
154 |
155 | public PlotModel WidthHistoPlotModel
156 | {
157 | get
158 | {
159 | return _widthtHistoPlotModel;
160 | }
161 |
162 | private set
163 | {
164 | _widthtHistoPlotModel = value;
165 | this.RaisePropertyChanged(nameof(WidthHistoPlotModel));
166 | }
167 | }
168 |
169 | public OxyImage PageImage { get; private set; }
170 |
171 | public int CurrentPageNumber
172 | {
173 | get
174 | {
175 | return _currentPageNumber;
176 | }
177 |
178 | set
179 | {
180 | if (value > NumberOfPages || value < 1)
181 | {
182 | return;
183 | }
184 |
185 | _currentPageNumber = value;
186 | LoadPage(_currentPageNumber);
187 | this.RaisePropertyChanged(nameof(CurrentPageNumber));
188 | }
189 | }
190 |
191 | public int NumberOfPages
192 | {
193 | get
194 | {
195 | return _numberOfPages;
196 | }
197 |
198 | private set
199 | {
200 | _numberOfPages = value;
201 | this.RaisePropertyChanged(nameof(NumberOfPages));
202 | }
203 | }
204 |
205 | private bool _clipPaths;
206 | public bool ClipPaths
207 | {
208 | get
209 | {
210 | return _clipPaths;
211 | }
212 |
213 | set
214 | {
215 | if (value == _clipPaths) return;
216 | _clipPaths = value;
217 | if (!string.IsNullOrEmpty(_pdfPath))
218 | {
219 | _pdfDocumentModel = PdfDocumentModel.Open(_pdfPath, _clipPaths);
220 | LoadPage(CurrentPageNumber);
221 | }
222 | this.RaisePropertyChanged(nameof(ClipPaths));
223 | }
224 | }
225 |
226 | private bool _removeDuplicateLetters;
227 | public bool RemoveDuplicateLetters
228 | {
229 | get
230 | {
231 | return _removeDuplicateLetters;
232 | }
233 |
234 | set
235 | {
236 | if (value == _removeDuplicateLetters) return;
237 | _removeDuplicateLetters = value;
238 |
239 | if (_pdfPageModel != null)
240 | {
241 | _pdfPageModel.SetRemoveDuplicateLetters(_removeDuplicateLetters);
242 | }
243 |
244 | if (IsDisplayLetters)
245 | {
246 | DisplayLetters();
247 | }
248 |
249 | if (IsDisplayWords)
250 | {
251 | DisplayWords();
252 | }
253 |
254 | if (IsDisplayTextLines)
255 | {
256 | DisplayTextLines();
257 | }
258 |
259 | if (IsDisplayTextBlocks)
260 | {
261 | DisplayTextBlocks();
262 | }
263 |
264 | this.RaisePropertyChanged(nameof(RemoveDuplicateLetters));
265 | }
266 | }
267 |
268 | bool _isDisplayLetters;
269 | public bool IsDisplayLetters
270 | {
271 | get
272 | {
273 | return _isDisplayLetters;
274 | }
275 |
276 | set
277 | {
278 | if (value == _isDisplayLetters) return;
279 | _isDisplayLetters = value;
280 |
281 | if (_isDisplayLetters)
282 | {
283 | DisplayLetters();
284 | }
285 | else
286 | {
287 | HideLetters();
288 | }
289 |
290 | this.RaisePropertyChanged(nameof(IsDisplayLetters));
291 | }
292 | }
293 |
294 |
295 | bool _isDisplayWords;
296 | public bool IsDisplayWords
297 | {
298 | get
299 | {
300 | return _isDisplayWords;
301 | }
302 |
303 | set
304 | {
305 | if (value == _isDisplayWords) return;
306 | _isDisplayWords = value;
307 |
308 | if (_isDisplayWords)
309 | {
310 | DisplayWords();
311 | }
312 | else
313 | {
314 | HideWords();
315 | }
316 |
317 | this.RaisePropertyChanged(nameof(IsDisplayWords));
318 | }
319 | }
320 |
321 | bool _isDisplayTextLines;
322 | public bool IsDisplayTextLines
323 | {
324 | get
325 | {
326 | return _isDisplayTextLines;
327 | }
328 |
329 | set
330 | {
331 | if (value == _isDisplayTextLines) return;
332 | _isDisplayTextLines = value;
333 |
334 | if (_isDisplayTextLines)
335 | {
336 | DisplayTextLines();
337 | }
338 | else
339 | {
340 | HideTextLines();
341 | }
342 |
343 | this.RaisePropertyChanged(nameof(IsDisplayTextLines));
344 | }
345 | }
346 |
347 | bool _isDisplayTextBlocks;
348 | public bool IsDisplayTextBlocks
349 | {
350 | get
351 | {
352 | return _isDisplayTextBlocks;
353 | }
354 |
355 | set
356 | {
357 | if (value == _isDisplayTextBlocks) return;
358 | _isDisplayTextBlocks = value;
359 |
360 | if (_isDisplayTextBlocks)
361 | {
362 | DisplayTextBlocks();
363 | }
364 | else
365 | {
366 | HideTextBlocks();
367 | }
368 |
369 | this.RaisePropertyChanged(nameof(IsDisplayTextBlocks));
370 | }
371 | }
372 |
373 | bool _isDisplayPaths;
374 | public bool IsDisplayPaths
375 | {
376 | get
377 | {
378 | return _isDisplayPaths;
379 | }
380 |
381 | set
382 | {
383 | if (value == _isDisplayPaths) return;
384 | _isDisplayPaths = value;
385 |
386 | if (_isDisplayPaths)
387 | {
388 | DisplayPaths();
389 | }
390 | else
391 | {
392 | HidePaths();
393 | }
394 |
395 | this.RaisePropertyChanged(nameof(IsDisplayPaths));
396 | }
397 | }
398 |
399 | bool _isDisplayImages;
400 | public bool IsDisplayImages
401 | {
402 | get
403 | {
404 | return _isDisplayImages;
405 | }
406 |
407 | set
408 | {
409 | if (value == _isDisplayImages) return;
410 | _isDisplayImages = value;
411 |
412 | if (_isDisplayImages)
413 | {
414 | DisplayImages();
415 | }
416 | else
417 | {
418 | HideImages();
419 | }
420 |
421 | this.RaisePropertyChanged(nameof(IsDisplayImages));
422 | }
423 | }
424 |
425 | ///
426 | /// Initializes a new instance of the class.
427 | ///
428 | public MainViewModel()
429 | {
430 | CustomController = new CustomPlotController();
431 |
432 | WordExtractorList = new ObservableCollection(PdfDocumentModel.GetWordExtractors());
433 | PageSegmenterList = new ObservableCollection(PdfDocumentModel.GetPageSegmenters());
434 | }
435 |
436 | public event PropertyChangedEventHandler PropertyChanged;
437 |
438 | protected void RaisePropertyChanged(string property)
439 | {
440 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
441 | }
442 |
443 | private string _pdfPath;
444 |
445 | public void OpenDocument(string path)
446 | {
447 | if (Path.GetExtension(path) != ".pdf")
448 | {
449 | return;
450 | }
451 |
452 | _pdfPath = path;
453 | _pdfImageConverter = new PdfImageConverter(_pdfPath);
454 | _pdfDocumentModel = PdfDocumentModel.Open(_pdfPath, ClipPaths);
455 | NumberOfPages = _pdfDocumentModel.NumberOfPages;
456 | PdfPigVersion = _pdfDocumentModel.PdfPigVersion;
457 | CurrentPageNumber = 1;
458 | }
459 |
460 | private bool LoadPage(int pageNo)
461 | {
462 | if (_pdfDocumentModel == null) return false;
463 |
464 | _pdfPageModel = _pdfDocumentModel.GetPage(pageNo);
465 |
466 | if (_pdfPageModel == null) return false;
467 |
468 | // set remove duplicate letters
469 | _pdfPageModel.SetRemoveDuplicateLetters(_removeDuplicateLetters);
470 |
471 | // set word extractor
472 | _pdfPageModel.SetWordExtractor(WordExtractor);
473 |
474 | // set page segmenter
475 | _pdfPageModel.SetPageSegmenter(PageSegmenter);
476 |
477 | var pageInfoModel = _pdfPageModel.GetPageInfo();
478 |
479 | // Plot height distrib
480 | HeightHistoPlotModel = pageInfoModel.HeightDistribution?.GetPlotModel("Letters height distribution");
481 | WidthHistoPlotModel = pageInfoModel.WidthDistribution?.GetPlotModel("Letters width distribution");
482 |
483 | // Plot page
484 | var pagePlotModel = new PlotModel { IsLegendVisible = false };
485 | pagePlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = 0, Maximum = _pdfPageModel.Height });
486 | pagePlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = 0, Maximum = _pdfPageModel.Width });
487 |
488 | // Add background image
489 | try
490 | {
491 | using (var stream = _pdfImageConverter.GetPageStream(pageNo, 2))
492 | {
493 | using (var fs = new FileStream("image.jpg", FileMode.Create))
494 | {
495 | stream.CopyTo(fs);
496 | }
497 | stream.Position = 0;
498 | PageImage = new OxyImage(stream);
499 | }
500 |
501 | pagePlotModel.Annotations.Add(new ImageAnnotation
502 | {
503 | ImageSource = PageImage,
504 | Opacity = 0.5,
505 | X = new PlotLength(_pdfPageModel.CropBox.Bounds.BottomLeft.X, PlotLengthUnit.Data),
506 | Y = new PlotLength(_pdfPageModel.CropBox.Bounds.BottomLeft.Y, PlotLengthUnit.Data),
507 | Width = new PlotLength(_pdfPageModel.CropBox.Bounds.Width, PlotLengthUnit.Data),
508 | Height = new PlotLength(_pdfPageModel.CropBox.Bounds.Height, PlotLengthUnit.Data),
509 | HorizontalAlignment = HorizontalAlignment.Left,
510 | VerticalAlignment = VerticalAlignment.Bottom
511 | });
512 | }
513 | catch (Exception)
514 | {
515 | throw;
516 | }
517 |
518 | this.PagePlotModel = pagePlotModel;
519 |
520 | if (IsDisplayLetters)
521 | {
522 | DisplayLetters();
523 | }
524 |
525 | if (IsDisplayWords)
526 | {
527 | DisplayWords();
528 | }
529 |
530 | if (IsDisplayTextLines)
531 | {
532 | DisplayTextLines();
533 | }
534 |
535 | if (IsDisplayTextBlocks)
536 | {
537 | DisplayTextBlocks();
538 | }
539 |
540 | if (IsDisplayPaths)
541 | {
542 | DisplayPaths();
543 | }
544 |
545 | if (IsDisplayImages)
546 | {
547 | DisplayImages();
548 | }
549 |
550 | return true;
551 | }
552 |
553 | public void DisplayLetters()
554 | {
555 | if (PagePlotModel == null) return;
556 |
557 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "letter").ToList())
558 | {
559 | PagePlotModel.Series.Remove(s);
560 | }
561 |
562 | foreach (var letter in _pdfPageModel.GetLetters())
563 | {
564 | var series1 = new LineSeries { Tag = "letter", Title = GetShorterText(letter.Value), LineStyle = LineStyle.Solid, Color = OxyColors.Blue };
565 | var bbox = letter.GlyphRectangle;
566 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
567 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomRight));
568 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopRight));
569 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopLeft));
570 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
571 | PagePlotModel.Series.Add(series1);
572 | }
573 |
574 | PagePlotModel.InvalidatePlot(true);
575 | }
576 |
577 | public void HideLetters()
578 | {
579 | if (PagePlotModel == null) return;
580 |
581 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "letter").ToList())
582 | {
583 | PagePlotModel.Series.Remove(s);
584 | }
585 |
586 | PagePlotModel.InvalidatePlot(true);
587 | }
588 |
589 | public void DisplayWords()
590 | {
591 | if (PagePlotModel == null) return;
592 |
593 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "word").ToList())
594 | {
595 | PagePlotModel.Series.Remove(s);
596 | }
597 |
598 | foreach (var word in _pdfPageModel.GetWords())
599 | {
600 | var series1 = new LineSeries { Tag = "word", Title = GetShorterText(word.Text), LineStyle = LineStyle.Solid, Color = OxyColors.Red };
601 | var bbox = word.BoundingBox;
602 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
603 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomRight));
604 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopRight));
605 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopLeft));
606 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
607 | PagePlotModel.Series.Add(series1);
608 | }
609 |
610 | PagePlotModel.InvalidatePlot(true);
611 | }
612 |
613 | public void HideWords()
614 | {
615 | if (PagePlotModel == null) return;
616 |
617 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "word").ToList())
618 | {
619 | PagePlotModel.Series.Remove(s);
620 | }
621 |
622 | PagePlotModel.InvalidatePlot(true);
623 | }
624 |
625 | public void DisplayTextLines()
626 | {
627 | if (PagePlotModel == null) return;
628 |
629 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "textline").ToList())
630 | {
631 | PagePlotModel.Series.Remove(s);
632 | }
633 |
634 | foreach (var line in _pdfPageModel.GetTextBlocks().SelectMany(b => b.TextLines))
635 | {
636 | var series1 = new LineSeries { Tag = "textline", Title = GetShorterText(line.Text), LineStyle = LineStyle.Solid, Color = OxyColors.OrangeRed };
637 | var bbox = line.BoundingBox;
638 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
639 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomRight));
640 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopRight));
641 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopLeft));
642 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
643 | PagePlotModel.Series.Add(series1);
644 | }
645 |
646 | PagePlotModel.InvalidatePlot(true);
647 | }
648 |
649 | public void HideTextLines()
650 | {
651 | if (PagePlotModel == null) return;
652 |
653 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "textline").ToList())
654 | {
655 | PagePlotModel.Series.Remove(s);
656 | }
657 |
658 | PagePlotModel.InvalidatePlot(true);
659 | }
660 |
661 | public void DisplayTextBlocks()
662 | {
663 | if (PagePlotModel == null) return;
664 |
665 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "textblock").ToList())
666 | {
667 | PagePlotModel.Series.Remove(s);
668 | }
669 |
670 | foreach (var block in _pdfPageModel.GetTextBlocks())
671 | {
672 | var series1 = new LineSeries { Tag = "textblock", Title = GetShorterText(block.Text), LineStyle = LineStyle.Solid, Color = OxyColors.Brown };
673 | var bbox = block.BoundingBox;
674 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
675 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomRight));
676 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopRight));
677 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopLeft));
678 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
679 | PagePlotModel.Series.Add(series1);
680 | }
681 |
682 | PagePlotModel.InvalidatePlot(true);
683 | }
684 |
685 | public void HideTextBlocks()
686 | {
687 | if (PagePlotModel == null) return;
688 |
689 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "textblock").ToList())
690 | {
691 | PagePlotModel.Series.Remove(s);
692 | }
693 |
694 | PagePlotModel.InvalidatePlot(true);
695 | }
696 |
697 | public void DisplayPaths()
698 | {
699 | if (PagePlotModel == null) return;
700 |
701 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "pdfpath").ToList())
702 | {
703 | PagePlotModel.Series.Remove(s);
704 | }
705 |
706 | foreach (var path in _pdfPageModel.GetPdfPaths())
707 | {
708 | foreach (var sp in path)
709 | {
710 | string title = ("path: " + (path.IsStroked ? "stroked " + (path.StrokeColor?.ToRGBValues()).ToString() : "") +
711 | (path.IsFilled ? "filled " + (path.FillColor?.ToRGBValues()).ToString() : "") +
712 | (path.IsClipping ? "clipping" : "")
713 | ).Trim();
714 | var series1 = new LineSeries { Tag = "pdfpath", Title = title, LineStyle = LineStyle.Solid, Color = OxyColors.Yellow };
715 |
716 | PdfPoint first = PdfPoint.Origin;
717 | foreach (var c in sp.Commands)
718 | {
719 | if (c is Move m)
720 | {
721 | first = m.Location;
722 | series1.Points.Add(PdfDocumentModel.ToDataPoint(first));
723 | }
724 | else if (c is Line l)
725 | {
726 | series1.Points.Add(PdfDocumentModel.ToDataPoint(l.From));
727 | series1.Points.Add(PdfDocumentModel.ToDataPoint(l.To));
728 | }
729 | else if (c is BezierCurve bc)
730 | {
731 | var lines = bc.ToLines(10).ToList();
732 | for (int i = 0; i < lines.Count; i++)
733 | {
734 | series1.Points.Add(PdfDocumentModel.ToDataPoint(lines[i].From));
735 | series1.Points.Add(PdfDocumentModel.ToDataPoint(lines[i].To));
736 | }
737 | }
738 | else if (c is Close)
739 | {
740 | series1.Points.Add(PdfDocumentModel.ToDataPoint(first));
741 | }
742 | else
743 | {
744 | throw new ArgumentException();
745 | }
746 | }
747 |
748 | PagePlotModel.Series.Add(series1);
749 | }
750 | }
751 |
752 | PagePlotModel.InvalidatePlot(true);
753 | }
754 |
755 | public void HidePaths()
756 | {
757 | if (PagePlotModel == null) return;
758 |
759 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "pdfpath").ToList())
760 | {
761 | PagePlotModel.Series.Remove(s);
762 | }
763 |
764 | PagePlotModel.InvalidatePlot(true);
765 | }
766 |
767 | public void DisplayImages()
768 | {
769 | if (PagePlotModel == null) return;
770 |
771 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "image").ToList())
772 | {
773 | PagePlotModel.Series.Remove(s);
774 | }
775 |
776 | foreach (var block in _pdfPageModel.GetImages())
777 | {
778 | var series1 = new LineSeries { Tag = "image", Title = "image", LineStyle = LineStyle.Solid, Color = OxyColors.YellowGreen };
779 | var bbox = block.Bounds;
780 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
781 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomRight));
782 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopRight));
783 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.TopLeft));
784 | series1.Points.Add(PdfDocumentModel.ToDataPoint(bbox.BottomLeft));
785 | PagePlotModel.Series.Add(series1);
786 | }
787 |
788 | PagePlotModel.InvalidatePlot(true);
789 | }
790 |
791 | public void HideImages()
792 | {
793 | if (PagePlotModel == null) return;
794 |
795 | foreach (var s in PagePlotModel.Series.Where(s => (string)s.Tag == "image").ToList())
796 | {
797 | PagePlotModel.Series.Remove(s);
798 | }
799 |
800 | PagePlotModel.InvalidatePlot(true);
801 | }
802 | private string GetShorterText(string text)
803 | {
804 | if (text.Length <= 25) return text;
805 | return string.Join("", text.Take(22)) + "...";
806 | }
807 |
808 | public void Dispose()
809 | {
810 | _pdfImageConverter.Dispose();
811 | // other dispose
812 | }
813 | }
814 | }
815 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace DlaViewer
2 | {
3 | using System.Diagnostics;
4 | using System.IO;
5 | using System.Windows;
6 |
7 | ///
8 | /// Interaction logic for MainWindow.xaml
9 | ///
10 | public partial class MainWindow : Window
11 | {
12 | private readonly MainViewModel mainViewModel = new MainViewModel();
13 |
14 | public MainWindow()
15 | {
16 | InitializeComponent();
17 | this.DataContext = this.mainViewModel;
18 | PagePlotView.SizeChanged += PagePlotView_SizeChanged;
19 | }
20 |
21 | private void PagePlotView_SizeChanged(object sender, SizeChangedEventArgs e)
22 | {
23 | Debug.Print(e.PreviousSize.ToString() + "->" + e.NewSize);
24 | }
25 |
26 | private void Window_Drop(object sender, DragEventArgs e)
27 | {
28 | var data = e.Data as DataObject;
29 | if (data?.ContainsFileDropList() == true)
30 | {
31 | foreach (var file in data.GetFileDropList())
32 | {
33 | this.mainViewModel.OpenDocument(file);
34 | this.Title = $"{Path.GetFileName(file)} ({this.mainViewModel.PdfPigVersion})";
35 | this.DragDropLabel.Visibility = Visibility.Hidden;
36 | break; // take only one file
37 | }
38 | }
39 | }
40 |
41 | private void buttonPrev_Click(object sender, RoutedEventArgs e)
42 | {
43 | mainViewModel.CurrentPageNumber--;
44 | e.Handled = true;
45 | }
46 |
47 | private void buttonNext_Click(object sender, RoutedEventArgs e)
48 | {
49 | mainViewModel.CurrentPageNumber++;
50 | e.Handled = true;
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/PdfDocumentModel.cs:
--------------------------------------------------------------------------------
1 | namespace DlaViewer
2 | {
3 | using OxyPlot;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Diagnostics;
7 | using System.IO;
8 | using System.Linq;
9 | using UglyToad.PdfPig;
10 | using UglyToad.PdfPig.Core;
11 | using UglyToad.PdfPig.DocumentLayoutAnalysis.PageSegmenter;
12 | using UglyToad.PdfPig.Util;
13 |
14 | public class PdfDocumentModel
15 | {
16 | private PdfDocument pdfDocument;
17 |
18 | public int NumberOfPages => pdfDocument.NumberOfPages;
19 |
20 | public PdfPageModel GetPage(int pageNo)
21 | {
22 | try
23 | {
24 | return new PdfPageModel(pdfDocument.GetPage(pageNo));
25 | }
26 | catch (Exception ex)
27 | {
28 | Debug.WriteLine(ex);
29 | return null;
30 | }
31 | }
32 |
33 | public string PdfPigVersion { get; set; }
34 |
35 | public static PdfDocumentModel Open(string path, bool clipPaths)
36 | {
37 | if (!File.Exists(path))
38 | {
39 | throw new Exception();
40 | }
41 |
42 | var version = System.Reflection.Assembly.GetAssembly(typeof(PdfDocument)).GetName().Version.ToString();
43 | var fullName = System.Reflection.Assembly.GetAssembly(typeof(PdfDocument)).GetName().Name;
44 |
45 | return new PdfDocumentModel()
46 | {
47 | pdfDocument = PdfDocument.Open(path,
48 | new ParsingOptions()
49 | {
50 | ClipPaths = clipPaths
51 | }),
52 | PdfPigVersion = $"{fullName} {version}".Trim()
53 | };
54 | }
55 |
56 | public static DataPoint ToDataPoint(PdfPoint pdfPoint)
57 | {
58 | return new DataPoint(pdfPoint.X, pdfPoint.Y);
59 | }
60 |
61 | public static IEnumerable GetWordExtractors()
62 | {
63 | // get all IPageSegmenter
64 | return GetAllFromType(typeof(IWordExtractor));
65 | }
66 |
67 | public static IEnumerable GetPageSegmenters()
68 | {
69 | // get all IPageSegmenter
70 | return GetAllFromType(typeof(IPageSegmenter));
71 | }
72 |
73 | private static IEnumerable GetAllFromType(Type type)
74 | {
75 | var seg = DefaultPageSegmenter.Instance; // make sure DLA lib is loaded
76 |
77 | return AppDomain.CurrentDomain.GetAssemblies()
78 | .Where(a => a.FullName.Contains("UglyToad"))
79 | .SelectMany(s => s.GetTypes())
80 | .Where(p => type.IsAssignableFrom(p))
81 | .Where(c => !c.IsAbstract);
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DlaViewer/PdfPageModel.cs:
--------------------------------------------------------------------------------
1 | namespace DlaViewer
2 | {
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using UglyToad.PdfPig.Content;
7 | using UglyToad.PdfPig.DocumentLayoutAnalysis;
8 | using UglyToad.PdfPig.DocumentLayoutAnalysis.PageSegmenter;
9 | using UglyToad.PdfPig.Graphics;
10 | using UglyToad.PdfPig.Util;
11 |
12 | public class PdfPageModel
13 | {
14 | private readonly Page page;
15 | private IWordExtractor wordExtractor;
16 | private IPageSegmenter pageSegmenter;
17 | private bool removeDuplicateLetters;
18 |
19 | public double Height => page.Height;
20 | public double Width => page.Width;
21 | public CropBox CropBox => page.CropBox;
22 |
23 | internal PdfPageModel(Page page)
24 | {
25 | this.page = page;
26 | }
27 |
28 | public void SetRemoveDuplicateLetters(bool remove)
29 | {
30 | removeDuplicateLetters = remove;
31 | }
32 |
33 | public void SetWordExtractor(Type wordExtractor)
34 | {
35 | if (wordExtractor == null) return;
36 |
37 | try
38 | {
39 | this.wordExtractor = (IWordExtractor)Activator.CreateInstance(wordExtractor);
40 | }
41 | catch (Exception)
42 | {
43 | this.wordExtractor = (IWordExtractor)wordExtractor.GetMethod("get_Instance").Invoke(null, null);
44 | }
45 | }
46 |
47 | public void SetPageSegmenter(Type pageSegmenter)
48 | {
49 | if (pageSegmenter == null) return;
50 | this.pageSegmenter = (IPageSegmenter)Activator.CreateInstance(pageSegmenter);
51 | }
52 |
53 | public IReadOnlyList GetLetters()
54 | {
55 | if (removeDuplicateLetters)
56 | {
57 | return DuplicateOverlappingTextProcessor.Get(page.Letters);
58 | }
59 |
60 | return page.Letters;
61 | }
62 |
63 | public IEnumerable GetWords()
64 | {
65 | if (wordExtractor == null)
66 | {
67 | return new List();
68 | }
69 |
70 | return wordExtractor.GetWords(GetLetters());
71 | }
72 |
73 | public IEnumerable GetTextBlocks()
74 | {
75 | if (pageSegmenter == null)
76 | {
77 | return new List();
78 | }
79 |
80 | return pageSegmenter.GetBlocks(GetWords());
81 | }
82 |
83 | public IEnumerable GetPdfPaths()
84 | {
85 | return page.ExperimentalAccess.Paths;
86 | }
87 |
88 | public IEnumerable GetImages()
89 | {
90 | return page.GetImages();
91 | }
92 |
93 | public PageInfoModel GetPageInfo()
94 | {
95 | return new PageInfoModel(this);
96 | }
97 |
98 | public class PageInfoModel
99 | {
100 | private readonly PdfPageModel pdfPageModel;
101 |
102 | public Distribution HeightDistribution { get; }
103 |
104 | public Distribution WidthDistribution { get; }
105 |
106 | public PageInfoModel(PdfPageModel pdfPageModel)
107 | {
108 | this.pdfPageModel = pdfPageModel;
109 | var filteredLetters = pdfPageModel.GetLetters().Where(l => !string.IsNullOrEmpty(l.Value.Trim())).ToList();
110 |
111 | if (filteredLetters.Count > 0)
112 | {
113 | HeightDistribution = new Distribution(filteredLetters.Select(l => l.GlyphRectangle.Height));
114 | WidthDistribution = new Distribution(filteredLetters.Select(l => l.GlyphRectangle.Width));
115 | }
116 | }
117 | }
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30011.22
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocumentLayoutAnalysis", "DocumentLayoutAnalysis\DocumentLayoutAnalysis.csproj", "{FE6AB876-089C-4E87-8160-D305738DB783}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageConverter", "ImageConverter\ImageConverter.csproj", "{78212F45-D69E-4A84-8A26-A4BB5609B660}"
9 | EndProject
10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DlaViewer", "DlaViewer\DlaViewer.csproj", "{24DCC056-5D71-48BF-B0C4-C20B5FA0EC36}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Release|Any CPU = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {FE6AB876-089C-4E87-8160-D305738DB783}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19 | {FE6AB876-089C-4E87-8160-D305738DB783}.Debug|Any CPU.Build.0 = Debug|Any CPU
20 | {FE6AB876-089C-4E87-8160-D305738DB783}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {FE6AB876-089C-4E87-8160-D305738DB783}.Release|Any CPU.Build.0 = Release|Any CPU
22 | {78212F45-D69E-4A84-8A26-A4BB5609B660}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {78212F45-D69E-4A84-8A26-A4BB5609B660}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {78212F45-D69E-4A84-8A26-A4BB5609B660}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {78212F45-D69E-4A84-8A26-A4BB5609B660}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {24DCC056-5D71-48BF-B0C4-C20B5FA0EC36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {24DCC056-5D71-48BF-B0C4-C20B5FA0EC36}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {24DCC056-5D71-48BF-B0C4-C20B5FA0EC36}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {24DCC056-5D71-48BF-B0C4-C20B5FA0EC36}.Release|Any CPU.Build.0 = Release|Any CPU
30 | EndGlobalSection
31 | GlobalSection(SolutionProperties) = preSolution
32 | HideSolutionNode = FALSE
33 | EndGlobalSection
34 | GlobalSection(ExtensibilityGlobals) = postSolution
35 | SolutionGuid = {8BAC0DED-E284-4954-8B93-E92E60F257B6}
36 | EndGlobalSection
37 | EndGlobal
38 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/DocumentLayoutAnalysis.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {FE6AB876-089C-4E87-8160-D305738DB783}
8 | Exe
9 | DocumentLayoutAnalysis
10 | DocumentLayoutAnalysis
11 | v4.6.1
12 | 512
13 | true
14 | true
15 |
16 |
17 |
18 |
19 | AnyCPU
20 | true
21 | full
22 | false
23 | bin\Debug\
24 | DEBUG;TRACE
25 | prompt
26 | 4
27 | true
28 |
29 |
30 | AnyCPU
31 | pdbonly
32 | true
33 | bin\Release\
34 | TRACE
35 | prompt
36 | 4
37 | true
38 | false
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | ..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | ..\packages\PdfPig.0.1.8-alpha-20230324-a3a9d\lib\net461\UglyToad.PdfPig.dll
57 |
58 |
59 | ..\packages\PdfPig.0.1.8-alpha-20230324-a3a9d\lib\net461\UglyToad.PdfPig.Core.dll
60 |
61 |
62 | ..\packages\PdfPig.0.1.8-alpha-20230324-a3a9d\lib\net461\UglyToad.PdfPig.DocumentLayoutAnalysis.dll
63 |
64 |
65 | ..\packages\PdfPig.0.1.8-alpha-20230324-a3a9d\lib\net461\UglyToad.PdfPig.Fonts.dll
66 |
67 |
68 | ..\packages\PdfPig.0.1.8-alpha-20230324-a3a9d\lib\net461\UglyToad.PdfPig.Package.dll
69 |
70 |
71 | ..\packages\PdfPig.0.1.8-alpha-20230324-a3a9d\lib\net461\UglyToad.PdfPig.Tokenization.dll
72 |
73 |
74 | ..\packages\PdfPig.0.1.8-alpha-20230324-a3a9d\lib\net461\UglyToad.PdfPig.Tokens.dll
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 | Designer
90 |
91 |
92 | Designer
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 | {78212f45-d69e-4a84-8a26-a4bb5609b660}
112 | ImageConverter
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/MarkedContentTest.cs:
--------------------------------------------------------------------------------
1 | namespace DocumentLayoutAnalysis
2 | {
3 | using System;
4 | using UglyToad.PdfPig;
5 |
6 | ///
7 | /// Export pdf document the PAGE XML format.
8 | ///
9 | public static class MarkedContentTest
10 | {
11 | private const string pdfPath = "../../Resources/Samples/Random 2 Columns Lists Chart_PDF-A.pdf";
12 |
13 | public static void Run()
14 | {
15 | using (PdfDocument document = PdfDocument.Open(pdfPath))
16 | {
17 | for (int i = 0; i < document.NumberOfPages; i++)
18 | {
19 | var page = document.GetPage(i + 1);
20 |
21 | var mcs = page.GetMarkedContents();
22 | foreach (var mc in mcs)
23 | {
24 | var letters = mc.Letters;
25 | var paths = mc.Paths;
26 | var images = mc.Images;
27 |
28 | foreach (var letter in letters)
29 | {
30 | Console.Write(letter.Value);
31 | }
32 | Console.WriteLine();
33 | }
34 | }
35 | }
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/PageExportExample.cs:
--------------------------------------------------------------------------------
1 | namespace DocumentLayoutAnalysis
2 | {
3 | using ImageConverter;
4 | using System.Drawing;
5 | using System.Drawing.Imaging;
6 | using System.IO;
7 | using UglyToad.PdfPig;
8 | using UglyToad.PdfPig.DocumentLayoutAnalysis.Export;
9 | using UglyToad.PdfPig.DocumentLayoutAnalysis.PageSegmenter;
10 | using UglyToad.PdfPig.DocumentLayoutAnalysis.ReadingOrderDetector;
11 | using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;
12 |
13 | ///
14 | /// Export pdf document the PAGE XML format.
15 | ///
16 | public static class PageExportExample
17 | {
18 | private static readonly string pdfPath = @"../../Resources/Samples/rotated block2.pdf";
19 | private static readonly int zoom = 5;
20 | private static readonly int pageNo = 1;
21 |
22 | public static void Run()
23 | {
24 | var exporter = new PageXmlTextExporter(NearestNeighbourWordExtractor.Instance,
25 | RecursiveXYCut.Instance,
26 | UnsupervisedReadingOrderDetector.Instance,
27 | scale: zoom);
28 |
29 | using (var converter = new PdfImageConverter(pdfPath))
30 | using (PdfDocument document = PdfDocument.Open(pdfPath))
31 | {
32 | var page = document.GetPage(pageNo);
33 |
34 | var xml = exporter.Get(page);
35 | File.WriteAllText(Path.ChangeExtension(pdfPath, pageNo + ".xml"), xml);
36 |
37 | using (var bitmap = converter.GetPage(page.Number, zoom))
38 | using (var graphics = Graphics.FromImage(bitmap))
39 | {
40 | // save pdf page as image
41 | bitmap.Save(Path.ChangeExtension(pdfPath, pageNo + "_raw.png"));
42 |
43 | // save empty image for LayoutEvalGUI
44 | Bitmap blackAndWhite = new Bitmap(bitmap.Width, bitmap.Height, PixelFormat.Format8bppIndexed);
45 | blackAndWhite.Save(Path.ChangeExtension(pdfPath, pageNo + "_bw_raw.png"));
46 | }
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Program.cs:
--------------------------------------------------------------------------------
1 | namespace DocumentLayoutAnalysis
2 | {
3 | class Program
4 | {
5 | static void Main(string[] args)
6 | {
7 | PageExportExample.Run();
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("DocumentLayoutAnalysis")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DocumentLayoutAnalysis")]
13 | [assembly: AssemblyCopyright("Copyright © 2019")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("fe6ab876-089c-4e87-8160-d305738db783")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/RamerDouglasPeucker.cs:
--------------------------------------------------------------------------------
1 | namespace DocumentLayoutAnalysis
2 | {
3 | using System.Collections.Generic;
4 | using UglyToad.PdfPig.Core;
5 |
6 | /*
7 | * Sources:
8 | * https://www.codeproject.com/Articles/18936/A-C-Implementation-of-Douglas-Peucker-Line-Approxi
9 | * https://codereview.stackexchange.com/questions/29002/ramer-douglas-peucker-algorithm
10 | * Optimisations:
11 | * - Do not use Sqrt function
12 | * - Use unsafe code
13 | * - Avoid duplicate computations in loop
14 | */
15 | public static class RamerDouglasPeucker
16 | {
17 | ///
18 | /// Uses the Ramer Douglas Peucker algorithm to reduce the number of points.
19 | ///
20 | /// The points.
21 | /// The tolerance.
22 | ///
23 | public static PdfPoint[] Reduce(PdfPoint[] points, double tolerance)
24 | {
25 | if (points == null || points.Length < 3) return points;
26 | if (double.IsInfinity(tolerance) || double.IsNaN(tolerance)) return points;
27 | tolerance *= tolerance;
28 | if (tolerance <= float.Epsilon) return points;
29 |
30 | int firstIndex = 0;
31 | int lastIndex = points.Length - 1;
32 | List indexesToKeep = new List();
33 |
34 | indexesToKeep.Add(firstIndex);
35 | indexesToKeep.Add(lastIndex);
36 |
37 | while (points[firstIndex].Equals(points[lastIndex]))
38 | {
39 | lastIndex--;
40 | }
41 |
42 | Reduce(points, firstIndex, lastIndex, tolerance, ref indexesToKeep);
43 |
44 | int l = indexesToKeep.Count;
45 | PdfPoint[] returnPoints = new PdfPoint[l];
46 | indexesToKeep.Sort();
47 |
48 | unsafe
49 | {
50 | fixed (PdfPoint* ptr = points, result = returnPoints)
51 | {
52 | PdfPoint* res = result;
53 | for (int i = 0; i < l; ++i)
54 | *(res + i) = *(ptr + indexesToKeep[i]);
55 | }
56 | }
57 |
58 | return returnPoints;
59 | }
60 |
61 | ///
62 | /// Douglases the peucker reduction.
63 | ///
64 | /// The points.
65 | /// The first point index.
66 | /// The last point index.
67 | /// The tolerance.
68 | /// The points' index to keep.
69 | private static void Reduce(PdfPoint[] points, int firstIndex, int lastIndex, double tolerance, ref List indexesToKeep)
70 | {
71 | double maxDistance = 0;
72 | int indexFarthest = 0;
73 |
74 | unsafe
75 | {
76 | fixed (PdfPoint* samples = points)
77 | {
78 | PdfPoint point1 = *(samples + firstIndex);
79 | PdfPoint point2 = *(samples + lastIndex);
80 | double distXY = (double)point1.X * (double)point2.Y - (double)point2.X * (double)point1.Y;
81 | double distX = (double)point2.X - (double)point1.X;
82 | double distY = (double)point1.Y - (double)point2.Y;
83 | double bottom = distX * distX + distY * distY;
84 |
85 | for (int index = firstIndex; index < lastIndex; index++)
86 | {
87 | PdfPoint point = *(samples + index);
88 | double area = distXY + distX * (double)point.Y + distY * (double)point.X;
89 | double distance = (area / bottom) * area;
90 |
91 | if (distance > maxDistance)
92 | {
93 | maxDistance = distance;
94 | indexFarthest = index;
95 | }
96 | }
97 | }
98 | }
99 |
100 | if (maxDistance > tolerance && indexFarthest != 0)
101 | {
102 | //Add the largest point that exceeds the tolerance
103 | indexesToKeep.Add(indexFarthest);
104 | Reduce(points, firstIndex, indexFarthest, tolerance, ref indexesToKeep);
105 | Reduce(points, indexFarthest, lastIndex, tolerance, ref indexesToKeep);
106 | }
107 | }
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/README.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/104-7-3.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/104-7-3.pdf
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/APISmap1.1_bw_raw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/APISmap1.1_bw_raw.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/APISmap1.1_raw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/APISmap1.1_raw.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/APISmap1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/APISmap1.pdf
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/Random 2 Columns Lists Chart.1_bw_raw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/Random 2 Columns Lists Chart.1_bw_raw.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/Random 2 Columns Lists Chart.1_raw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/Random 2 Columns Lists Chart.1_raw.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/Random 2 Columns Lists Chart.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/Random 2 Columns Lists Chart.pdf
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/Random 2 Columns Lists Chart_PDF-A.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/Random 2 Columns Lists Chart_PDF-A.pdf
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/excel.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/excel.pdf
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/excel_2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/excel_2.pdf
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/oxyplot.pdf:
--------------------------------------------------------------------------------
1 | %PDF-1.3
2 | 1 0 obj
3 | <<
4 | /CreationDate (D:20190902192858+01'00)
5 | >>
6 | endobj
7 | 2 0 obj
8 | <<
9 | /Type /Catalog
10 | /Pages 3 0 R
11 | >>
12 | endobj
13 | 3 0 obj
14 | <<
15 | /Type /Pages
16 | /Count 1
17 | /Kids [6 0 R]
18 | >>
19 | endobj
20 | 4 0 obj
21 | <<
22 | /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
23 | /Font <<
24 | /F1 9 0 R
25 | /F2 12 0 R
26 | >>
27 | /XObject <<
28 | >>
29 | /ExtGState <<
30 | /GS0 7 0 R
31 | /GS1 10 0 R
32 | >>
33 | >>
34 | endobj
35 | 5 0 obj
36 | <<
37 | /Length 8744
38 | >>
39 | stream
40 | q
41 | 0 0 0 rg
42 | /GS0 gs
43 | 1 0 0 1 50.56969 341.788 cm
44 | 1 0 0 1 -5.421 0 cm
45 | BT
46 | /F1 9.75 Tf
47 | 0 2.067 Td
48 | (10) Tj
49 | ET
50 | Q
51 | q
52 | 0 0 0 rg
53 | /GS0 gs
54 | 1 0 0 1 142.26262 341.788 cm
55 | 1 0 0 1 -5.421 0 cm
56 | BT
57 | /F1 9.75 Tf
58 | 0 2.067 Td
59 | (20) Tj
60 | ET
61 | Q
62 | q
63 | 0 0 0 rg
64 | /GS0 gs
65 | 1 0 0 1 233.95555 341.788 cm
66 | 1 0 0 1 -5.421 0 cm
67 | BT
68 | /F1 9.75 Tf
69 | 0 2.067 Td
70 | (30) Tj
71 | ET
72 | Q
73 | q
74 | 0 0 0 rg
75 | /GS0 gs
76 | 1 0 0 1 325.64848 341.788 cm
77 | 1 0 0 1 -5.421 0 cm
78 | BT
79 | /F1 9.75 Tf
80 | 0 2.067 Td
81 | (40) Tj
82 | ET
83 | Q
84 | q
85 | 0 0 0 rg
86 | /GS0 gs
87 | 1 0 0 1 417.34141 341.788 cm
88 | 1 0 0 1 -5.421 0 cm
89 | BT
90 | /F1 9.75 Tf
91 | 0 2.067 Td
92 | (50) Tj
93 | ET
94 | Q
95 | q
96 | 0 0 0 rg
97 | /GS0 gs
98 | 1 0 0 1 509.03434 341.788 cm
99 | 1 0 0 1 -5.421 0 cm
100 | BT
101 | /F1 9.75 Tf
102 | 0 2.067 Td
103 | (60) Tj
104 | ET
105 | Q
106 | 0 0 0 RG
107 | /GS1 gs
108 | 0.75 w
109 | 0 j
110 | 8 334.8124 m
111 | 546.1187 334.8124 l
112 | S
113 | 0 0 0 RG
114 | /GS1 gs
115 | 0.75 w
116 | 0 j
117 | 50.5697 331.8368 m
118 | 50.5697 337.788 l
119 | S
120 | 0 0 0 RG
121 | /GS1 gs
122 | 0.75 w
123 | 0 j
124 | 142.2626 331.8368 m
125 | 142.2626 337.788 l
126 | S
127 | 0 0 0 RG
128 | /GS1 gs
129 | 0.75 w
130 | 0 j
131 | 233.9555 331.8368 m
132 | 233.9555 337.788 l
133 | S
134 | 0 0 0 RG
135 | /GS1 gs
136 | 0.75 w
137 | 0 j
138 | 325.6485 331.8368 m
139 | 325.6485 337.788 l
140 | S
141 | 0 0 0 RG
142 | /GS1 gs
143 | 0.75 w
144 | 0 j
145 | 417.3414 331.8368 m
146 | 417.3414 337.788 l
147 | S
148 | 0 0 0 RG
149 | /GS1 gs
150 | 0.75 w
151 | 0 j
152 | 509.0343 331.8368 m
153 | 509.0343 337.788 l
154 | S
155 | q
156 | 0 0 0 rg
157 | /GS0 gs
158 | 1 0 0 1 277.05937 363.5695 cm
159 | 1 0 0 1 -42.47438 -12.56625 cm
160 | BT
161 | /F1 11.25 Tf
162 | 0 2.385 Td
163 | (,NPSmG2GjuW6) Tj
164 | ET
165 | Q
166 | q
167 | 0 0 0 rg
168 | /GS0 gs
169 | 1 0 0 1 550.11874 70.09688 cm
170 | 0.85888 -0.51218 0.51218 0.85888 0 0 cm
171 | 1 0 0 1 0 -5.44538 cm
172 | BT
173 | /F1 9.75 Tf
174 | 0 2.067 Td
175 | (-800) Tj
176 | ET
177 | Q
178 | q
179 | 0 0 0 rg
180 | /GS0 gs
181 | 1 0 0 1 550.11874 134.77209 cm
182 | 0.85888 -0.51218 0.51218 0.85888 0 0 cm
183 | 1 0 0 1 0 -5.44538 cm
184 | BT
185 | /F1 9.75 Tf
186 | 0 2.067 Td
187 | (-600) Tj
188 | ET
189 | Q
190 | q
191 | 0 0 0 rg
192 | /GS0 gs
193 | 1 0 0 1 550.11874 199.44729 cm
194 | 0.85888 -0.51218 0.51218 0.85888 0 0 cm
195 | 1 0 0 1 0 -5.44538 cm
196 | BT
197 | /F1 9.75 Tf
198 | 0 2.067 Td
199 | (-400) Tj
200 | ET
201 | Q
202 | q
203 | 0 0 0 rg
204 | /GS0 gs
205 | 1 0 0 1 550.11874 264.1225 cm
206 | 0.85888 -0.51218 0.51218 0.85888 0 0 cm
207 | 1 0 0 1 0 -5.44538 cm
208 | BT
209 | /F1 9.75 Tf
210 | 0 2.067 Td
211 | (-200) Tj
212 | ET
213 | Q
214 | q
215 | 0 0 0 rg
216 | /GS0 gs
217 | 1 0 0 1 550.11874 328.79771 cm
218 | 0.85888 -0.51218 0.51218 0.85888 0 0 cm
219 | 1 0 0 1 0 -5.44538 cm
220 | BT
221 | /F1 9.75 Tf
222 | 0 2.067 Td
223 | (0) Tj
224 | ET
225 | Q
226 | 0 0 0 RG
227 | /GS1 gs
228 | 0.75 w
229 | 0 j
230 | 546.1187 8 m
231 | 546.1187 334.8124 l
232 | S
233 | 0 0 0 RG
234 | /GS1 gs
235 | 0.75 w
236 | 0 j
237 | 542.1513 70.0969 m
238 | 546.1187 70.0969 l
239 | S
240 | 0 0 0 RG
241 | /GS1 gs
242 | 0.75 w
243 | 0 j
244 | 542.1513 134.7721 m
245 | 546.1187 134.7721 l
246 | S
247 | 0 0 0 RG
248 | /GS1 gs
249 | 0.75 w
250 | 0 j
251 | 542.1513 199.4473 m
252 | 546.1187 199.4473 l
253 | S
254 | 0 0 0 RG
255 | /GS1 gs
256 | 0.75 w
257 | 0 j
258 | 542.1513 264.1225 m
259 | 546.1187 264.1225 l
260 | S
261 | 0 0 0 RG
262 | /GS1 gs
263 | 0.75 w
264 | 0 j
265 | 542.1513 328.7977 m
266 | 546.1187 328.7977 l
267 | S
268 | q
269 | 0 0 0 rg
270 | /GS0 gs
271 | 1 0 0 1 588 171.4062 cm
272 | 0 1 -1 0 0 0 cm
273 | 1 0 0 1 -41.54063 0 cm
274 | BT
275 | /F1 11.25 Tf
276 | 0 2.385 Td
277 | (LSW9KHRZ8AN) Tj
278 | ET
279 | Q
280 | q
281 | 1 0.3137 0 RG
282 | /GS1 gs
283 | 0.75 w
284 | 0 j
285 | 470.6033 253.5723 m
286 | 491.1437 253.5723 l
287 | S
288 | 1 0.3137 0 RG
289 | /GS1 gs
290 | 0.75 w
291 | 0 j
292 | 480.8735 263.8425 m
293 | 480.8735 243.3022 l
294 | S
295 | 1 0.3137 0 RG
296 | /GS1 gs
297 | 0.75 w
298 | 0 j
299 | 470.6033 263.8425 m
300 | 491.1437 243.3022 l
301 | S
302 | 1 0.3137 0 RG
303 | /GS1 gs
304 | 0.75 w
305 | 0 j
306 | 470.6033 243.3022 m
307 | 491.1437 263.8425 l
308 | S
309 | 1 0.3137 0 RG
310 | /GS1 gs
311 | 0.75 w
312 | 0 j
313 | 377.6184 64.3014 m
314 | 390.9844 64.3014 l
315 | S
316 | 1 0.3137 0 RG
317 | /GS1 gs
318 | 0.75 w
319 | 0 j
320 | 384.3014 70.9845 m
321 | 384.3014 57.6184 l
322 | S
323 | 1 0.3137 0 RG
324 | /GS1 gs
325 | 0.75 w
326 | 0 j
327 | 377.6184 70.9845 m
328 | 390.9844 57.6184 l
329 | S
330 | 1 0.3137 0 RG
331 | /GS1 gs
332 | 0.75 w
333 | 0 j
334 | 377.6184 57.6184 m
335 | 390.9844 70.9845 l
336 | S
337 | 1 0.3137 0 RG
338 | /GS1 gs
339 | 0.75 w
340 | 0 j
341 | 219.3613 11.2358 m
342 | 232.7274 11.2358 l
343 | S
344 | 1 0.3137 0 RG
345 | /GS1 gs
346 | 0.75 w
347 | 0 j
348 | 226.0444 17.9188 m
349 | 226.0444 4.5527 l
350 | S
351 | 1 0.3137 0 RG
352 | /GS1 gs
353 | 0.75 w
354 | 0 j
355 | 219.3613 17.9188 m
356 | 232.7274 4.5527 l
357 | S
358 | 1 0.3137 0 RG
359 | /GS1 gs
360 | 0.75 w
361 | 0 j
362 | 219.3613 4.5527 m
363 | 232.7274 17.9188 l
364 | S
365 | 1 0.3137 0 RG
366 | /GS1 gs
367 | 0.75 w
368 | 0 j
369 | 276.0048 248.7343 m
370 | 289.3709 248.7343 l
371 | S
372 | 1 0.3137 0 RG
373 | /GS1 gs
374 | 0.75 w
375 | 0 j
376 | 282.6878 255.4174 m
377 | 282.6878 242.0513 l
378 | S
379 | 1 0.3137 0 RG
380 | /GS1 gs
381 | 0.75 w
382 | 0 j
383 | 276.0048 255.4174 m
384 | 289.3709 242.0513 l
385 | S
386 | 1 0.3137 0 RG
387 | /GS1 gs
388 | 0.75 w
389 | 0 j
390 | 276.0048 242.0513 m
391 | 289.3709 255.4174 l
392 | S
393 | 1 0.3137 0 RG
394 | /GS1 gs
395 | 0.75 w
396 | 0 j
397 | 94.9805 150.0337 m
398 | 108.3466 150.0337 l
399 | S
400 | 1 0.3137 0 RG
401 | /GS1 gs
402 | 0.75 w
403 | 0 j
404 | 101.6636 156.7168 m
405 | 101.6636 143.3507 l
406 | S
407 | 1 0.3137 0 RG
408 | /GS1 gs
409 | 0.75 w
410 | 0 j
411 | 94.9805 156.7168 m
412 | 108.3466 143.3507 l
413 | S
414 | 1 0.3137 0 RG
415 | /GS1 gs
416 | 0.75 w
417 | 0 j
418 | 94.9805 143.3507 m
419 | 108.3466 156.7168 l
420 | S
421 | 1 0.3137 0 RG
422 | /GS1 gs
423 | 0.75 w
424 | 0 j
425 | 530.5734 76.8226 m
426 | 551.1138 76.8226 l
427 | S
428 | 1 0.3137 0 RG
429 | /GS1 gs
430 | 0.75 w
431 | 0 j
432 | 540.8436 87.0927 m
433 | 540.8436 66.5524 l
434 | S
435 | 1 0.3137 0 RG
436 | /GS1 gs
437 | 0.75 w
438 | 0 j
439 | 530.5734 87.0927 m
440 | 551.1138 66.5524 l
441 | S
442 | 1 0.3137 0 RG
443 | /GS1 gs
444 | 0.75 w
445 | 0 j
446 | 530.5734 66.5524 m
447 | 551.1138 87.0927 l
448 | S
449 | 1 0.3137 0 RG
450 | /GS1 gs
451 | 0.75 w
452 | 0 j
453 | 381.3506 331.6087 m
454 | 390.3128 331.6087 l
455 | S
456 | 1 0.3137 0 RG
457 | /GS1 gs
458 | 0.75 w
459 | 0 j
460 | 385.8317 336.0898 m
461 | 385.8317 327.1275 l
462 | S
463 | 1 0.3137 0 RG
464 | /GS1 gs
465 | 0.75 w
466 | 0 j
467 | 381.3506 336.0898 m
468 | 390.3128 327.1275 l
469 | S
470 | 1 0.3137 0 RG
471 | /GS1 gs
472 | 0.75 w
473 | 0 j
474 | 381.3506 327.1275 m
475 | 390.3128 336.0898 l
476 | S
477 | 1 0.3137 0 RG
478 | /GS1 gs
479 | 0.75 w
480 | 0 j
481 | 372.5659 266.673 m
482 | 393.1063 266.673 l
483 | S
484 | 1 0.3137 0 RG
485 | /GS1 gs
486 | 0.75 w
487 | 0 j
488 | 382.8361 276.9432 m
489 | 382.8361 256.4029 l
490 | S
491 | 1 0.3137 0 RG
492 | /GS1 gs
493 | 0.75 w
494 | 0 j
495 | 372.5659 276.9432 m
496 | 393.1063 256.4029 l
497 | S
498 | 1 0.3137 0 RG
499 | /GS1 gs
500 | 0.75 w
501 | 0 j
502 | 372.5659 256.4029 m
503 | 393.1063 276.9432 l
504 | S
505 | 1 0.3137 0 RG
506 | /GS1 gs
507 | 0.75 w
508 | 0 j
509 | 131.517 172.5024 m
510 | 144.8831 172.5024 l
511 | S
512 | 1 0.3137 0 RG
513 | /GS1 gs
514 | 0.75 w
515 | 0 j
516 | 138.2 179.1855 m
517 | 138.2 165.8194 l
518 | S
519 | 1 0.3137 0 RG
520 | /GS1 gs
521 | 0.75 w
522 | 0 j
523 | 131.517 179.1855 m
524 | 144.8831 165.8194 l
525 | S
526 | 1 0.3137 0 RG
527 | /GS1 gs
528 | 0.75 w
529 | 0 j
530 | 131.517 165.8194 m
531 | 144.8831 179.1855 l
532 | S
533 | 1 0.3137 0 RG
534 | /GS1 gs
535 | 0.75 w
536 | 0 j
537 | 191.891 255.1331 m
538 | 205.2571 255.1331 l
539 | S
540 | 1 0.3137 0 RG
541 | /GS1 gs
542 | 0.75 w
543 | 0 j
544 | 198.574 261.8161 m
545 | 198.574 248.45 l
546 | S
547 | 1 0.3137 0 RG
548 | /GS1 gs
549 | 0.75 w
550 | 0 j
551 | 191.891 261.8161 m
552 | 205.2571 248.45 l
553 | S
554 | 1 0.3137 0 RG
555 | /GS1 gs
556 | 0.75 w
557 | 0 j
558 | 191.891 248.45 m
559 | 205.2571 261.8161 l
560 | S
561 | 1 0.3137 0 RG
562 | /GS1 gs
563 | 0.75 w
564 | 0 j
565 | 437.6256 28.5078 m
566 | 446.5879 28.5078 l
567 | S
568 | 1 0.3137 0 RG
569 | /GS1 gs
570 | 0.75 w
571 | 0 j
572 | 442.1068 32.9889 m
573 | 442.1068 24.0266 l
574 | S
575 | 1 0.3137 0 RG
576 | /GS1 gs
577 | 0.75 w
578 | 0 j
579 | 437.6256 32.9889 m
580 | 446.5879 24.0266 l
581 | S
582 | 1 0.3137 0 RG
583 | /GS1 gs
584 | 0.75 w
585 | 0 j
586 | 437.6256 24.0266 m
587 | 446.5879 32.9889 l
588 | S
589 | 1 0.3137 0 RG
590 | /GS1 gs
591 | 0.75 w
592 | 0 j
593 | 239.5811 163.4736 m
594 | 252.9472 163.4736 l
595 | S
596 | 1 0.3137 0 RG
597 | /GS1 gs
598 | 0.75 w
599 | 0 j
600 | 246.2641 170.1566 m
601 | 246.2641 156.7905 l
602 | S
603 | 1 0.3137 0 RG
604 | /GS1 gs
605 | 0.75 w
606 | 0 j
607 | 239.5811 170.1566 m
608 | 252.9472 156.7905 l
609 | S
610 | 1 0.3137 0 RG
611 | /GS1 gs
612 | 0.75 w
613 | 0 j
614 | 239.5811 156.7905 m
615 | 252.9472 170.1566 l
616 | S
617 | 1 0.3137 0 RG
618 | /GS1 gs
619 | 0.75 w
620 | 0 j
621 | 203.4995 192.1182 m
622 | 212.4618 192.1182 l
623 | S
624 | 1 0.3137 0 RG
625 | /GS1 gs
626 | 0.75 w
627 | 0 j
628 | 207.9807 196.5993 m
629 | 207.9807 187.6371 l
630 | S
631 | 1 0.3137 0 RG
632 | /GS1 gs
633 | 0.75 w
634 | 0 j
635 | 203.4995 196.5993 m
636 | 212.4618 187.6371 l
637 | S
638 | 1 0.3137 0 RG
639 | /GS1 gs
640 | 0.75 w
641 | 0 j
642 | 203.4995 187.6371 m
643 | 212.4618 196.5993 l
644 | S
645 | 1 0.3137 0 RG
646 | /GS1 gs
647 | 0.75 w
648 | 0 j
649 | 345.9043 117.5786 m
650 | 354.8666 117.5786 l
651 | S
652 | 1 0.3137 0 RG
653 | /GS1 gs
654 | 0.75 w
655 | 0 j
656 | 350.3855 122.0597 m
657 | 350.3855 113.0975 l
658 | S
659 | 1 0.3137 0 RG
660 | /GS1 gs
661 | 0.75 w
662 | 0 j
663 | 345.9043 122.0597 m
664 | 354.8666 113.0975 l
665 | S
666 | 1 0.3137 0 RG
667 | /GS1 gs
668 | 0.75 w
669 | 0 j
670 | 345.9043 113.0975 m
671 | 354.8666 122.0597 l
672 | S
673 | 1 0.3137 0 RG
674 | /GS1 gs
675 | 0.75 w
676 | 0 j
677 | 3.0577 310.6457 m
678 | 23.5981 310.6457 l
679 | S
680 | 1 0.3137 0 RG
681 | /GS1 gs
682 | 0.75 w
683 | 0 j
684 | 13.3279 320.9159 m
685 | 13.3279 300.3755 l
686 | S
687 | 1 0.3137 0 RG
688 | /GS1 gs
689 | 0.75 w
690 | 0 j
691 | 3.0577 320.9159 m
692 | 23.5981 300.3755 l
693 | S
694 | 1 0.3137 0 RG
695 | /GS1 gs
696 | 0.75 w
697 | 0 j
698 | 3.0577 300.3755 m
699 | 23.5981 320.9159 l
700 | S
701 | 1 0.3137 0 RG
702 | /GS1 gs
703 | 0.75 w
704 | 0 j
705 | 113.1653 227.0475 m
706 | 133.7057 227.0475 l
707 | S
708 | 1 0.3137 0 RG
709 | /GS1 gs
710 | 0.75 w
711 | 0 j
712 | 123.4355 237.3177 m
713 | 123.4355 216.7773 l
714 | S
715 | 1 0.3137 0 RG
716 | /GS1 gs
717 | 0.75 w
718 | 0 j
719 | 113.1653 237.3177 m
720 | 133.7057 216.7773 l
721 | S
722 | 1 0.3137 0 RG
723 | /GS1 gs
724 | 0.75 w
725 | 0 j
726 | 113.1653 216.7773 m
727 | 133.7057 237.3177 l
728 | S
729 | 1 0.3137 0 RG
730 | /GS1 gs
731 | 0.75 w
732 | 0 j
733 | 167.598 55.8351 m
734 | 176.5602 55.8351 l
735 | S
736 | 1 0.3137 0 RG
737 | /GS1 gs
738 | 0.75 w
739 | 0 j
740 | 172.0791 60.3163 m
741 | 172.0791 51.354 l
742 | S
743 | 1 0.3137 0 RG
744 | /GS1 gs
745 | 0.75 w
746 | 0 j
747 | 167.598 60.3163 m
748 | 176.5602 51.354 l
749 | S
750 | 1 0.3137 0 RG
751 | /GS1 gs
752 | 0.75 w
753 | 0 j
754 | 167.598 51.354 m
755 | 176.5602 60.3163 l
756 | S
757 | 1 0.3137 0 RG
758 | /GS1 gs
759 | 0.75 w
760 | 0 j
761 | 377.4521 34.9002 m
762 | 390.8182 34.9002 l
763 | S
764 | 1 0.3137 0 RG
765 | /GS1 gs
766 | 0.75 w
767 | 0 j
768 | 384.1352 41.5833 m
769 | 384.1352 28.2172 l
770 | S
771 | 1 0.3137 0 RG
772 | /GS1 gs
773 | 0.75 w
774 | 0 j
775 | 377.4521 41.5833 m
776 | 390.8182 28.2172 l
777 | S
778 | 1 0.3137 0 RG
779 | /GS1 gs
780 | 0.75 w
781 | 0 j
782 | 377.4521 28.2172 m
783 | 390.8182 41.5833 l
784 | S
785 | Q
786 | q
787 | 0 0 0 rg
788 | /GS0 gs
789 | 1 0 0 1 277.05937 392 cm
790 | 1 0 0 1 -90.65925 -18.4305 cm
791 | BT
792 | /F2 16.5 Tf
793 | 0 3.498 Td
794 | (FF8lFNuAQPhr7 GQLa) Tj
795 | ET
796 | Q
797 | endstream
798 | endobj
799 | 6 0 obj
800 | <<
801 | /Type /Page
802 | /Parent 3 0 R
803 | /MediaBox [0 0 600 400]
804 | /Contents 5 0 R
805 | /Resources 4 0 R
806 | >>
807 | endobj
808 | 7 0 obj
809 | <<
810 | /Type /ExtGState
811 | /ca 1
812 | >>
813 | endobj
814 | 8 0 obj
815 | <<
816 | /Type /FontDescriptor
817 | /Ascent 905
818 | /CapHeight 716
819 | /Descent -212
820 | /Flags 32
821 | /FontBBox [-665 -325 2046 1040]
822 | /ItalicAngle 0
823 | /StemV 0
824 | /XHeight 519
825 | /FontName /Arial
826 | >>
827 | endobj
828 | 9 0 obj
829 | <<
830 | /Type /Font
831 | /Subtype /TrueType
832 | /Encoding /WinAnsiEncoding
833 | /BaseFont /Arial
834 | /FontDescriptor 8 0 R
835 | /FirstChar 0
836 | /LastChar 255
837 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 277 354 556 556 889 666 190 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 277 277 583 583 583 556 1015 666 666 722 722 666 610 777 722 277 500 666 556 833 722 777 666 777 722 666 610 722 666 943 666 666 610 277 277 277 469 556 333 556 556 500 556 556 277 556 556 222 222 500 222 833 556 556 556 556 333 500 277 556 500 722 500 500 500 333 259 333 583 750 556 750 222 556 333 1000 556 556 333 1000 666 333 1000 750 610 750 750 222 222 333 333 350 556 1000 333 1000 500 333 943 750 500 666 277 333 556 556 556 556 259 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 537 333 333 333 365 556 833 833 833 610 666 666 666 666 666 666 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 500 556 556 556 556 277 277 277 277 556 556 556 556 556 556 556 548 610 556 556 556 556 500 556 500]
838 | >>
839 | endobj
840 | 10 0 obj
841 | <<
842 | /Type /ExtGState
843 | /CA 1
844 | >>
845 | endobj
846 | 11 0 obj
847 | <<
848 | /Type /FontDescriptor
849 | /Ascent 905
850 | /CapHeight 716
851 | /Descent -212
852 | /Flags 32
853 | /FontBBox [-628 -376 2000 1056]
854 | /ItalicAngle 0
855 | /StemV 0
856 | /XHeight 519
857 | /FontName /Arial,Bold
858 | >>
859 | endobj
860 | 12 0 obj
861 | <<
862 | /Type /Font
863 | /Subtype /TrueType
864 | /Encoding /WinAnsiEncoding
865 | /BaseFont /Arial,Bold
866 | /FontDescriptor 11 0 R
867 | /FirstChar 0
868 | /LastChar 255
869 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 333 474 556 556 889 722 237 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 333 333 583 583 583 610 975 722 722 722 722 666 610 777 722 277 556 722 610 833 722 777 666 777 722 666 610 722 666 943 666 666 610 333 277 333 583 556 333 556 610 556 610 556 333 610 610 277 277 556 277 889 610 610 610 610 389 556 333 610 556 777 556 556 500 389 279 389 583 750 556 750 277 556 500 1000 556 556 333 1000 666 333 1000 750 610 750 750 277 277 500 500 350 556 1000 333 1000 556 333 943 750 500 666 277 333 556 556 556 556 279 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 556 333 333 333 365 556 833 833 833 610 722 722 722 722 722 722 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 556 556 556 556 556 277 277 277 277 610 610 610 610 610 610 610 548 610 610 610 610 610 556 610 556]
870 | >>
871 | endobj
872 | xref
873 | 0 13
874 | 0000000000 65535 f
875 | 0000000009 00000 n
876 | 0000000069 00000 n
877 | 0000000118 00000 n
878 | 0000000175 00000 n
879 | 0000000330 00000 n
880 | 0000009126 00000 n
881 | 0000009230 00000 n
882 | 0000009274 00000 n
883 | 0000009454 00000 n
884 | 0000010640 00000 n
885 | 0000010685 00000 n
886 | 0000010871 00000 n
887 | trailer
888 | <<
889 | /Size 13
890 | /Root 2 0 R
891 | /Info 1 0 R
892 | >>
893 | startxref
894 | 12063
895 | %%EOF
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/oxyplot_2.pdf:
--------------------------------------------------------------------------------
1 | %PDF-1.3
2 | 1 0 obj
3 | <<
4 | /CreationDate (D:20190902192858+01'00)
5 | >>
6 | endobj
7 | 2 0 obj
8 | <<
9 | /Type /Catalog
10 | /Pages 3 0 R
11 | >>
12 | endobj
13 | 3 0 obj
14 | <<
15 | /Type /Pages
16 | /Count 1
17 | /Kids [6 0 R]
18 | >>
19 | endobj
20 | 4 0 obj
21 | <<
22 | /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
23 | /Font <<
24 | /F1 9 0 R
25 | /F2 13 0 R
26 | >>
27 | /XObject <<
28 | >>
29 | /ExtGState <<
30 | /GS0 7 0 R
31 | /GS1 10 0 R
32 | /GS2 11 0 R
33 | >>
34 | >>
35 | endobj
36 | 5 0 obj
37 | <<
38 | /Length 7216
39 | >>
40 | stream
41 | q
42 | 0 0 0 rg
43 | /GS0 gs
44 | 1 0 0 1 72.12432 341.788 cm
45 | 1 0 0 1 -10.94063 0 cm
46 | BT
47 | /F1 11.25 Tf
48 | 0 2.385 Td
49 | (0.04) Tj
50 | ET
51 | Q
52 | q
53 | 0 0 0 rg
54 | /GS0 gs
55 | 1 0 0 1 172.73972 341.788 cm
56 | 1 0 0 1 -10.94063 0 cm
57 | BT
58 | /F1 11.25 Tf
59 | 0 2.385 Td
60 | (0.05) Tj
61 | ET
62 | Q
63 | q
64 | 0 0 0 rg
65 | /GS0 gs
66 | 1 0 0 1 273.35513 341.788 cm
67 | 1 0 0 1 -10.94063 0 cm
68 | BT
69 | /F1 11.25 Tf
70 | 0 2.385 Td
71 | (0.06) Tj
72 | ET
73 | Q
74 | q
75 | 0 0 0 rg
76 | /GS0 gs
77 | 1 0 0 1 373.97054 341.788 cm
78 | 1 0 0 1 -10.94063 0 cm
79 | BT
80 | /F1 11.25 Tf
81 | 0 2.385 Td
82 | (0.07) Tj
83 | ET
84 | Q
85 | q
86 | 0 0 0 rg
87 | /GS0 gs
88 | 1 0 0 1 474.58595 341.788 cm
89 | 1 0 0 1 -10.94063 0 cm
90 | BT
91 | /F1 11.25 Tf
92 | 0 2.385 Td
93 | (0.08) Tj
94 | ET
95 | Q
96 | 0 0 0 RG
97 | /GS1 gs
98 | 0.75 w
99 | 0 j
100 | 8 337.2965 m
101 | 555.8075 337.2965 l
102 | S
103 | 0 0 0 RG
104 | /GS2 gs
105 | 0.75 w
106 | [3 0.75 0.75 0.75]0 d
107 | 0 j
108 | 72.1243 337.2965 m
109 | 72.1243 8 l
110 | S
111 | []0 d
112 | 0 0 0 RG
113 | /GS2 gs
114 | 0.75 w
115 | [3 0.75 0.75 0.75]0 d
116 | 0 j
117 | 172.7397 337.2965 m
118 | 172.7397 8 l
119 | S
120 | []0 d
121 | 0 0 0 RG
122 | /GS2 gs
123 | 0.75 w
124 | [3 0.75 0.75 0.75]0 d
125 | 0 j
126 | 273.3551 337.2965 m
127 | 273.3551 8 l
128 | S
129 | []0 d
130 | 0 0 0 RG
131 | /GS2 gs
132 | 0.75 w
133 | [3 0.75 0.75 0.75]0 d
134 | 0 j
135 | 373.9705 337.2965 m
136 | 373.9705 8 l
137 | S
138 | []0 d
139 | 0 0 0 RG
140 | /GS2 gs
141 | 0.75 w
142 | [3 0.75 0.75 0.75]0 d
143 | 0 j
144 | 474.5859 337.2965 m
145 | 474.5859 8 l
146 | S
147 | []0 d
148 | 0 0 0 RG
149 | /GS1 gs
150 | 0.75 w
151 | 0 j
152 | 72.1243 336.805 m
153 | 72.1243 337.788 l
154 | S
155 | 0 0 0 RG
156 | /GS1 gs
157 | 0.75 w
158 | 0 j
159 | 172.7397 336.805 m
160 | 172.7397 337.788 l
161 | S
162 | 0 0 0 RG
163 | /GS1 gs
164 | 0.75 w
165 | 0 j
166 | 273.3551 336.805 m
167 | 273.3551 337.788 l
168 | S
169 | 0 0 0 RG
170 | /GS1 gs
171 | 0.75 w
172 | 0 j
173 | 373.9705 336.805 m
174 | 373.9705 337.788 l
175 | S
176 | 0 0 0 RG
177 | /GS1 gs
178 | 0.75 w
179 | 0 j
180 | 474.5859 336.805 m
181 | 474.5859 337.788 l
182 | S
183 | q
184 | 0 0 0 rg
185 | /GS0 gs
186 | 1 0 0 1 281.90375 366.9205 cm
187 | 1 0 0 1 -16.87125 -8.3775 cm
188 | BT
189 | /F1 7.5 Tf
190 | 0 1.59 Td
191 | (i 4 dYp p4) Tj
192 | ET
193 | Q
194 | q
195 | 0 0 0 rg
196 | /GS0 gs
197 | 1 0 0 1 559.8075 10.77732 cm
198 | 1 0 0 1 0 -6.28313 cm
199 | BT
200 | /F1 11.25 Tf
201 | 0 2.385 Td
202 | (0.2) Tj
203 | ET
204 | Q
205 | q
206 | 0 0 0 rg
207 | /GS0 gs
208 | 1 0 0 1 559.8075 98.78757 cm
209 | 1 0 0 1 0 -6.28313 cm
210 | BT
211 | /F1 11.25 Tf
212 | 0 2.385 Td
213 | (0.4) Tj
214 | ET
215 | Q
216 | q
217 | 0 0 0 rg
218 | /GS0 gs
219 | 1 0 0 1 559.8075 186.79781 cm
220 | 1 0 0 1 0 -6.28313 cm
221 | BT
222 | /F1 11.25 Tf
223 | 0 2.385 Td
224 | (0.6) Tj
225 | ET
226 | Q
227 | q
228 | 0 0 0 rg
229 | /GS0 gs
230 | 1 0 0 1 559.8075 274.80806 cm
231 | 1 0 0 1 0 -6.28313 cm
232 | BT
233 | /F1 11.25 Tf
234 | 0 2.385 Td
235 | (0.8) Tj
236 | ET
237 | Q
238 | 0 0 0 RG
239 | /GS1 gs
240 | 0.75 w
241 | 0 j
242 | 555.8075 8 m
243 | 555.8075 337.2965 l
244 | S
245 | 0 0 0 RG
246 | /GS2 gs
247 | 0.75 w
248 | [3 0.75 0.75 0.75]0 d
249 | 0 j
250 | 8 10.7773 m
251 | 555.8075 10.7773 l
252 | S
253 | []0 d
254 | 0 0 0 RG
255 | /GS2 gs
256 | 0.75 w
257 | [3 0.75 0.75 0.75]0 d
258 | 0 j
259 | 8 98.7876 m
260 | 555.8075 98.7876 l
261 | S
262 | []0 d
263 | 0 0 0 RG
264 | /GS2 gs
265 | 0.75 w
266 | [3 0.75 0.75 0.75]0 d
267 | 0 j
268 | 8 186.7978 m
269 | 555.8075 186.7978 l
270 | S
271 | []0 d
272 | 0 0 0 RG
273 | /GS2 gs
274 | 0.75 w
275 | [3 0.75 0.75 0.75]0 d
276 | 0 j
277 | 8 274.8081 m
278 | 555.8075 274.8081 l
279 | S
280 | []0 d
281 | 0 0 0 RG
282 | /GS1 gs
283 | 0.75 w
284 | 0 j
285 | 555.1522 10.7773 m
286 | 555.8075 10.7773 l
287 | S
288 | 0 0 0 RG
289 | /GS1 gs
290 | 0.75 w
291 | 0 j
292 | 555.1522 98.7876 m
293 | 555.8075 98.7876 l
294 | S
295 | 0 0 0 RG
296 | /GS1 gs
297 | 0.75 w
298 | 0 j
299 | 555.1522 186.7978 m
300 | 555.8075 186.7978 l
301 | S
302 | 0 0 0 RG
303 | /GS1 gs
304 | 0.75 w
305 | 0 j
306 | 555.1522 274.8081 m
307 | 555.8075 274.8081 l
308 | S
309 | q
310 | 0 0 0 rg
311 | /GS0 gs
312 | 1 0 0 1 588 172.64825 cm
313 | 0 1 -1 0 0 0 cm
314 | 1 0 0 1 -26.44875 0 cm
315 | BT
316 | /F1 7.5 Tf
317 | 0 1.59 Td
318 | (F53bO2fBEcpO) Tj
319 | ET
320 | Q
321 | q
322 | 1.5 w
323 | 0 0 0 RG
324 | /GS1 gs
325 | 0.1373 0 0.7647 rg
326 | /GS0 gs
327 | 420.0496 252.7729 8.9512 8.9512 re B
328 | 1.5 w
329 | 0 0 0 RG
330 | /GS1 gs
331 | 0.1373 0 0.7647 rg
332 | /GS0 gs
333 | 117.2799 132.5937 8.9512 8.9512 re B
334 | 1.5 w
335 | 0 0 0 RG
336 | /GS1 gs
337 | 0.1373 0 0.7647 rg
338 | /GS0 gs
339 | 16.8508 6.7847 8.9512 8.9512 re B
340 | 1.5 w
341 | 0 0 0 RG
342 | /GS1 gs
343 | 0.1373 0 0.7647 rg
344 | /GS0 gs
345 | 115.2723 145.7874 8.9512 8.9512 re B
346 | 1.5 w
347 | 0 0 0 RG
348 | /GS1 gs
349 | 0.1373 0 0.7647 rg
350 | /GS0 gs
351 | 339.7999 190.6977 8.9512 8.9512 re B
352 | 1.5 w
353 | 0 0 0 RG
354 | /GS1 gs
355 | 0.1373 0 0.7647 rg
356 | /GS0 gs
357 | 174.951 133.6534 8.9512 8.9512 re B
358 | 1.5 w
359 | 0 0 0 RG
360 | /GS1 gs
361 | 0.1373 0 0.7647 rg
362 | /GS0 gs
363 | 395.9278 278.9944 8.9512 8.9512 re B
364 | 1.5 w
365 | 0 0 0 RG
366 | /GS1 gs
367 | 0.1373 0 0.7647 rg
368 | /GS0 gs
369 | 463.8549 242.9968 8.9512 8.9512 re B
370 | 1.5 w
371 | 0 0 0 RG
372 | /GS1 gs
373 | 0.1373 0 0.7647 rg
374 | /GS0 gs
375 | 297.6737 208.2638 8.9512 8.9512 re B
376 | 1.5 w
377 | 0 0 0 RG
378 | /GS1 gs
379 | 0.1373 0 0.7647 rg
380 | /GS0 gs
381 | 39.1997 68.7257 8.9512 8.9512 re B
382 | 1.5 w
383 | 0 0 0 RG
384 | /GS1 gs
385 | 0.1373 0 0.7647 rg
386 | /GS0 gs
387 | 428.5896 306.297 8.9512 8.9512 re B
388 | 1.5 w
389 | 0 0 0 RG
390 | /GS1 gs
391 | 0.1373 0 0.7647 rg
392 | /GS0 gs
393 | 369.8861 269.2726 8.9512 8.9512 re B
394 | 1.5 w
395 | 0 0 0 RG
396 | /GS1 gs
397 | 0.1373 0 0.7647 rg
398 | /GS0 gs
399 | 393.9268 275.9806 8.9512 8.9512 re B
400 | 1.5 w
401 | 0 0 0 RG
402 | /GS1 gs
403 | 0.1373 0 0.7647 rg
404 | /GS0 gs
405 | 380.8481 219.1699 8.9512 8.9512 re B
406 | 1.5 w
407 | 0 0 0 RG
408 | /GS1 gs
409 | 0.1373 0 0.7647 rg
410 | /GS0 gs
411 | 81.2587 124.2065 8.9512 8.9512 re B
412 | 1.5 w
413 | 0 0 0 RG
414 | /GS1 gs
415 | 0.1373 0 0.7647 rg
416 | /GS0 gs
417 | 252.3116 171.3846 8.9512 8.9512 re B
418 | 1.5 w
419 | 0 0 0 RG
420 | /GS1 gs
421 | 0.1373 0 0.7647 rg
422 | /GS0 gs
423 | 391.642 251.6585 8.9512 8.9512 re B
424 | 1.5 w
425 | 0 0 0 RG
426 | /GS1 gs
427 | 0.1373 0 0.7647 rg
428 | /GS0 gs
429 | 155.9118 58.8858 8.9512 8.9512 re B
430 | 1.5 w
431 | 0 0 0 RG
432 | /GS1 gs
433 | 0.1373 0 0.7647 rg
434 | /GS0 gs
435 | 543.9361 327.7381 8.9512 8.9512 re B
436 | 1.5 w
437 | 0 0 0 RG
438 | /GS1 gs
439 | 0.1373 0 0.7647 rg
440 | /GS0 gs
441 | 356.1185 240.7981 8.9512 8.9512 re B
442 | 1.5 w
443 | 0 0 0 RG
444 | /GS1 gs
445 | 0.1373 0 0.7647 rg
446 | /GS0 gs
447 | 186.9008 91.036 8.9512 8.9512 re B
448 | 1.5 w
449 | 0 0 0 RG
450 | /GS1 gs
451 | 0.1373 0 0.7647 rg
452 | /GS0 gs
453 | 510.2694 304.0625 8.9512 8.9512 re B
454 | 1.5 w
455 | 0 0 0 RG
456 | /GS1 gs
457 | 0.1373 0 0.7647 rg
458 | /GS0 gs
459 | 10.5693 83.1629 8.9512 8.9512 re B
460 | 1.5 w
461 | 0 0 0 RG
462 | /GS1 gs
463 | 0.1373 0 0.7647 rg
464 | /GS0 gs
465 | 350.4823 222.9728 8.9512 8.9512 re B
466 | 1.5 w
467 | 0 0 0 RG
468 | /GS1 gs
469 | 0.1373 0 0.7647 rg
470 | /GS0 gs
471 | 62.7878 32.4981 8.9512 8.9512 re B
472 | 1.5 w
473 | 0 0 0 RG
474 | /GS1 gs
475 | 0.1373 0 0.7647 rg
476 | /GS0 gs
477 | 321.7437 171.6405 8.9512 8.9512 re B
478 | 1.5 w
479 | 0 0 0 RG
480 | /GS1 gs
481 | 0.1373 0 0.7647 rg
482 | /GS0 gs
483 | 127.4335 135.4002 8.9512 8.9512 re B
484 | 1.5 w
485 | 0 0 0 RG
486 | /GS1 gs
487 | 0.1373 0 0.7647 rg
488 | /GS0 gs
489 | 347.0564 204.246 8.9512 8.9512 re B
490 | 1.5 w
491 | 0 0 0 RG
492 | /GS1 gs
493 | 0.1373 0 0.7647 rg
494 | /GS0 gs
495 | 82.2592 43.239 8.9512 8.9512 re B
496 | 1.5 w
497 | 0 0 0 RG
498 | /GS1 gs
499 | 0.1373 0 0.7647 rg
500 | /GS0 gs
501 | 70.4483 96.4211 8.9512 8.9512 re B
502 | 1.5 w
503 | 0 0 0 RG
504 | /GS1 gs
505 | 1 0.1294 0 rg
506 | /GS0 gs
507 | 8.9482 22.4714 8.9512 8.9512 re B
508 | 1.5 w
509 | 0 0 0 RG
510 | /GS1 gs
511 | 1 0.1294 0 rg
512 | /GS0 gs
513 | 142.5976 142.4798 8.9512 8.9512 re B
514 | 1.5 w
515 | 0 0 0 RG
516 | /GS1 gs
517 | 1 0.1294 0 rg
518 | /GS0 gs
519 | 375.0931 275.3867 8.9512 8.9512 re B
520 | 1.5 w
521 | 0 0 0 RG
522 | /GS1 gs
523 | 1 0.1294 0 rg
524 | /GS0 gs
525 | 62.149 102.8149 8.9512 8.9512 re B
526 | 1.5 w
527 | 0 0 0 RG
528 | /GS1 gs
529 | 1 0.1294 0 rg
530 | /GS0 gs
531 | 545.9617 321.3075 8.9512 8.9512 re B
532 | 1.5 w
533 | 0 0 0 RG
534 | /GS1 gs
535 | 1 0.1294 0 rg
536 | /GS0 gs
537 | 173.5491 189.8593 8.9512 8.9512 re B
538 | 1.5 w
539 | 0 0 0 RG
540 | /GS1 gs
541 | 1 0.1294 0 rg
542 | /GS0 gs
543 | 304.071 223.5419 8.9512 8.9512 re B
544 | 1.5 w
545 | 0 0 0 RG
546 | /GS1 gs
547 | 1 0.1294 0 rg
548 | /GS0 gs
549 | 18.8473 37.3062 8.9512 8.9512 re B
550 | 1.5 w
551 | 0 0 0 RG
552 | /GS1 gs
553 | 1 0.1294 0 rg
554 | /GS0 gs
555 | 461.1996 326.2094 8.9512 8.9512 re B
556 | 1.5 w
557 | 0 0 0 RG
558 | /GS1 gs
559 | 1 0.1294 0 rg
560 | /GS0 gs
561 | 491.893 328.5491 8.9512 8.9512 re B
562 | 1.5 w
563 | 0 0 0 RG
564 | /GS1 gs
565 | 1 0.1294 0 rg
566 | /GS0 gs
567 | 508.6942 329.5928 8.9512 8.9512 re B
568 | 1.5 w
569 | 0 0 0 RG
570 | /GS1 gs
571 | 1 0.1294 0 rg
572 | /GS0 gs
573 | 150.3559 140.6779 8.9512 8.9512 re B
574 | 1.5 w
575 | 0 0 0 RG
576 | /GS1 gs
577 | 1 0.1294 0 rg
578 | /GS0 gs
579 | 54.1613 111.6788 8.9512 8.9512 re B
580 | 1.5 w
581 | 0 0 0 RG
582 | /GS1 gs
583 | 1 0.1294 0 rg
584 | /GS0 gs
585 | 11.9215 20.5356 8.9512 8.9512 re B
586 | Q
587 | q
588 | 0 0 0 rg
589 | /GS0 gs
590 | 1 0 0 1 281.90375 392 cm
591 | 1 0 0 1 -24.3405 -15.0795 cm
592 | BT
593 | /F2 13.5 Tf
594 | 0 2.862 Td
595 | (gEpy L) Tj
596 | ET
597 | Q
598 | endstream
599 | endobj
600 | 6 0 obj
601 | <<
602 | /Type /Page
603 | /Parent 3 0 R
604 | /MediaBox [0 0 600 400]
605 | /Contents 5 0 R
606 | /Resources 4 0 R
607 | >>
608 | endobj
609 | 7 0 obj
610 | <<
611 | /Type /ExtGState
612 | /ca 1
613 | >>
614 | endobj
615 | 8 0 obj
616 | <<
617 | /Type /FontDescriptor
618 | /Ascent 905
619 | /CapHeight 716
620 | /Descent -212
621 | /Flags 32
622 | /FontBBox [-665 -325 2046 1040]
623 | /ItalicAngle 0
624 | /StemV 0
625 | /XHeight 519
626 | /FontName /Arial
627 | >>
628 | endobj
629 | 9 0 obj
630 | <<
631 | /Type /Font
632 | /Subtype /TrueType
633 | /Encoding /WinAnsiEncoding
634 | /BaseFont /Arial
635 | /FontDescriptor 8 0 R
636 | /FirstChar 0
637 | /LastChar 255
638 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 277 354 556 556 889 666 190 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 277 277 583 583 583 556 1015 666 666 722 722 666 610 777 722 277 500 666 556 833 722 777 666 777 722 666 610 722 666 943 666 666 610 277 277 277 469 556 333 556 556 500 556 556 277 556 556 222 222 500 222 833 556 556 556 556 333 500 277 556 500 722 500 500 500 333 259 333 583 750 556 750 222 556 333 1000 556 556 333 1000 666 333 1000 750 610 750 750 222 222 333 333 350 556 1000 333 1000 500 333 943 750 500 666 277 333 556 556 556 556 259 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 537 333 333 333 365 556 833 833 833 610 666 666 666 666 666 666 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 500 556 556 556 556 277 277 277 277 556 556 556 556 556 556 556 548 610 556 556 556 556 500 556 500]
639 | >>
640 | endobj
641 | 10 0 obj
642 | <<
643 | /Type /ExtGState
644 | /CA 1
645 | >>
646 | endobj
647 | 11 0 obj
648 | <<
649 | /Type /ExtGState
650 | /CA 0.250980392156863
651 | >>
652 | endobj
653 | 12 0 obj
654 | <<
655 | /Type /FontDescriptor
656 | /Ascent 905
657 | /CapHeight 716
658 | /Descent -212
659 | /Flags 32
660 | /FontBBox [-628 -376 2000 1056]
661 | /ItalicAngle 0
662 | /StemV 0
663 | /XHeight 519
664 | /FontName /Arial,Bold
665 | >>
666 | endobj
667 | 13 0 obj
668 | <<
669 | /Type /Font
670 | /Subtype /TrueType
671 | /Encoding /WinAnsiEncoding
672 | /BaseFont /Arial,Bold
673 | /FontDescriptor 12 0 R
674 | /FirstChar 0
675 | /LastChar 255
676 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 333 474 556 556 889 722 237 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 333 333 583 583 583 610 975 722 722 722 722 666 610 777 722 277 556 722 610 833 722 777 666 777 722 666 610 722 666 943 666 666 610 333 277 333 583 556 333 556 610 556 610 556 333 610 610 277 277 556 277 889 610 610 610 610 389 556 333 610 556 777 556 556 500 389 279 389 583 750 556 750 277 556 500 1000 556 556 333 1000 666 333 1000 750 610 750 750 277 277 500 500 350 556 1000 333 1000 556 333 943 750 500 666 277 333 556 556 556 556 279 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 556 333 333 333 365 556 833 833 833 610 722 722 722 722 722 722 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 556 556 556 556 556 277 277 277 277 610 610 610 610 610 610 610 548 610 610 610 610 610 556 610 556]
677 | >>
678 | endobj
679 | xref
680 | 0 14
681 | 0000000000 65535 f
682 | 0000000009 00000 n
683 | 0000000069 00000 n
684 | 0000000118 00000 n
685 | 0000000175 00000 n
686 | 0000000342 00000 n
687 | 0000007610 00000 n
688 | 0000007714 00000 n
689 | 0000007758 00000 n
690 | 0000007938 00000 n
691 | 0000009124 00000 n
692 | 0000009169 00000 n
693 | 0000009230 00000 n
694 | 0000009416 00000 n
695 | trailer
696 | <<
697 | /Size 14
698 | /Root 2 0 R
699 | /Info 1 0 R
700 | >>
701 | startxref
702 | 10608
703 | %%EOF
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/oxyplot_4.pdf:
--------------------------------------------------------------------------------
1 | %PDF-1.3
2 | 1 0 obj
3 | <<
4 | /CreationDate (D:20190902205414+01'00)
5 | >>
6 | endobj
7 | 2 0 obj
8 | <<
9 | /Type /Catalog
10 | /Pages 3 0 R
11 | >>
12 | endobj
13 | 3 0 obj
14 | <<
15 | /Type /Pages
16 | /Count 1
17 | /Kids [6 0 R]
18 | >>
19 | endobj
20 | 4 0 obj
21 | <<
22 | /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
23 | /Font <<
24 | /F1 9 0 R
25 | /F2 14 0 R
26 | >>
27 | /XObject <<
28 | >>
29 | /ExtGState <<
30 | /GS0 7 0 R
31 | /GS1 10 0 R
32 | /GS2 11 0 R
33 | /GS3 12 0 R
34 | >>
35 | >>
36 | endobj
37 | 5 0 obj
38 | <<
39 | /Length 13974
40 | >>
41 | stream
42 | q
43 | 0 0 0 rg
44 | /GS0 gs
45 | 1 0 0 1 55.5795 360.8675 cm
46 | 1 0 0 1 -18.96825 0 cm
47 | BT
48 | /F1 10.5 Tf
49 | 0 2.226 Td
50 | (608.632) Tj
51 | ET
52 | Q
53 | q
54 | 0 0 0 rg
55 | /GS0 gs
56 | 1 0 0 1 129.03773 360.8675 cm
57 | 1 0 0 1 -18.96825 0 cm
58 | BT
59 | /F1 10.5 Tf
60 | 0 2.226 Td
61 | (608.632) Tj
62 | ET
63 | Q
64 | q
65 | 0 0 0 rg
66 | /GS0 gs
67 | 1 0 0 1 202.49596 360.8675 cm
68 | 1 0 0 1 -18.96825 0 cm
69 | BT
70 | /F1 10.5 Tf
71 | 0 2.226 Td
72 | (608.632) Tj
73 | ET
74 | Q
75 | q
76 | 0 0 0 rg
77 | /GS0 gs
78 | 1 0 0 1 275.9542 360.8675 cm
79 | 1 0 0 1 -18.96825 0 cm
80 | BT
81 | /F1 10.5 Tf
82 | 0 2.226 Td
83 | (608.632) Tj
84 | ET
85 | Q
86 | q
87 | 0 0 0 rg
88 | /GS0 gs
89 | 1 0 0 1 349.41243 360.8675 cm
90 | 1 0 0 1 -18.96825 0 cm
91 | BT
92 | /F1 10.5 Tf
93 | 0 2.226 Td
94 | (608.632) Tj
95 | ET
96 | Q
97 | q
98 | 0 0 0 rg
99 | /GS0 gs
100 | 1 0 0 1 422.87066 360.8675 cm
101 | 1 0 0 1 -18.96825 0 cm
102 | BT
103 | /F1 10.5 Tf
104 | 0 2.226 Td
105 | (608.632) Tj
106 | ET
107 | Q
108 | q
109 | 0 0 0 rg
110 | /GS0 gs
111 | 1 0 0 1 496.32889 360.8675 cm
112 | 1 0 0 1 -18.96825 0 cm
113 | BT
114 | /F1 10.5 Tf
115 | 0 2.226 Td
116 | (608.632) Tj
117 | ET
118 | Q
119 | 0 0 0 RG
120 | /GS1 gs
121 | 0.75 w
122 | 0 j
123 | 8 350.1077 m
124 | 525.322 350.1077 l
125 | S
126 | 0 0 0 RG
127 | /GS2 gs
128 | 0.75 w
129 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
130 | 0 j
131 | 55.5795 350.1077 m
132 | 55.5795 8 l
133 | S
134 | []0 d
135 | 0 0 0 RG
136 | /GS2 gs
137 | 0.75 w
138 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
139 | 0 j
140 | 129.0377 350.1077 m
141 | 129.0377 8 l
142 | S
143 | []0 d
144 | 0 0 0 RG
145 | /GS2 gs
146 | 0.75 w
147 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
148 | 0 j
149 | 202.496 350.1077 m
150 | 202.496 8 l
151 | S
152 | []0 d
153 | 0 0 0 RG
154 | /GS2 gs
155 | 0.75 w
156 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
157 | 0 j
158 | 275.9542 350.1077 m
159 | 275.9542 8 l
160 | S
161 | []0 d
162 | 0 0 0 RG
163 | /GS2 gs
164 | 0.75 w
165 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
166 | 0 j
167 | 349.4124 350.1077 m
168 | 349.4124 8 l
169 | S
170 | []0 d
171 | 0 0 0 RG
172 | /GS2 gs
173 | 0.75 w
174 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
175 | 0 j
176 | 422.8707 350.1077 m
177 | 422.8707 8 l
178 | S
179 | []0 d
180 | 0 0 0 RG
181 | /GS2 gs
182 | 0.75 w
183 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
184 | 0 j
185 | 496.3289 350.1077 m
186 | 496.3289 8 l
187 | S
188 | []0 d
189 | 0 0 0 RG
190 | /GS1 gs
191 | 0.75 w
192 | 0 j
193 | 55.5795 343.348 m
194 | 55.5795 356.8675 l
195 | S
196 | 0 0 0 RG
197 | /GS1 gs
198 | 0.75 w
199 | 0 j
200 | 129.0377 343.348 m
201 | 129.0377 356.8675 l
202 | S
203 | 0 0 0 RG
204 | /GS1 gs
205 | 0.75 w
206 | 0 j
207 | 202.496 343.348 m
208 | 202.496 356.8675 l
209 | S
210 | 0 0 0 RG
211 | /GS1 gs
212 | 0.75 w
213 | 0 j
214 | 275.9542 343.348 m
215 | 275.9542 356.8675 l
216 | S
217 | 0 0 0 RG
218 | /GS1 gs
219 | 0.75 w
220 | 0 j
221 | 349.4124 343.348 m
222 | 349.4124 356.8675 l
223 | S
224 | 0 0 0 RG
225 | /GS1 gs
226 | 0.75 w
227 | 0 j
228 | 422.8707 343.348 m
229 | 422.8707 356.8675 l
230 | S
231 | 0 0 0 RG
232 | /GS1 gs
233 | 0.75 w
234 | 0 j
235 | 496.3289 343.348 m
236 | 496.3289 356.8675 l
237 | S
238 | q
239 | 0 0 0 rg
240 | /GS0 gs
241 | 1 0 0 1 21.01301 17.09174 cm
242 | 1 0 0 1 0 -5.86425 cm
243 | BT
244 | /F1 10.5 Tf
245 | 0 2.226 Td
246 | (418.346) Tj
247 | ET
248 | Q
249 | q
250 | 0 0 0 rg
251 | /GS0 gs
252 | 1 0 0 1 21.01301 156.68989 cm
253 | 1 0 0 1 0 -5.86425 cm
254 | BT
255 | /F1 10.5 Tf
256 | 0 2.226 Td
257 | (418.346) Tj
258 | ET
259 | Q
260 | q
261 | 0 0 0 rg
262 | /GS0 gs
263 | 1 0 0 1 21.01301 296.28803 cm
264 | 1 0 0 1 0 -5.86425 cm
265 | BT
266 | /F1 10.5 Tf
267 | 0 2.226 Td
268 | (418.346) Tj
269 | ET
270 | Q
271 | 0 0 0 RG
272 | /GS1 gs
273 | 0.75 w
274 | 0 j
275 | 8 8 m
276 | 8 350.1077 l
277 | S
278 | 0 0 0 RG
279 | /GS2 gs
280 | 0.75 w
281 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
282 | 0 j
283 | 8 17.0917 m
284 | 525.322 17.0917 l
285 | S
286 | []0 d
287 | 0 0 0 RG
288 | /GS2 gs
289 | 0.75 w
290 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
291 | 0 j
292 | 8 156.6899 m
293 | 525.322 156.6899 l
294 | S
295 | []0 d
296 | 0 0 0 RG
297 | /GS2 gs
298 | 0.75 w
299 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
300 | 0 j
301 | 8 296.288 m
302 | 525.322 296.288 l
303 | S
304 | []0 d
305 | 0 0 0 RG
306 | /GS1 gs
307 | 0.75 w
308 | 0 j
309 | 8 17.0917 m
310 | 17.013 17.0917 l
311 | S
312 | 0 0 0 RG
313 | /GS1 gs
314 | 0.75 w
315 | 0 j
316 | 8 156.6899 m
317 | 17.013 156.6899 l
318 | S
319 | 0 0 0 RG
320 | /GS1 gs
321 | 0.75 w
322 | 0 j
323 | 8 296.288 m
324 | 17.013 296.288 l
325 | S
326 | q
327 | 0 0 0 rg
328 | /GS0 gs
329 | 1 0 0 1 70.67801 179.05387 cm
330 | 0 1 -1 0 0 0 cm
331 | 1 0 0 1 -26.2275 0 cm
332 | BT
333 | /F1 7.5 Tf
334 | 0 1.59 Td
335 | (WBxE sFI4,v0X) Tj
336 | ET
337 | Q
338 | q
339 | 360.459 252.1041 m
340 | 372.781 239.782 l
341 | 360.459 227.46 l
342 | 348.1369 239.782 l
343 | 0 0 0 RG
344 | /GS1 gs
345 | 0.75 w
346 | 0 j
347 | 0 0.1373 0.7176 rg
348 | /GS0 gs
349 | b
350 | 403.8691 136.8853 m
351 | 416.1912 124.5633 l
352 | 403.8691 112.2412 l
353 | 391.5471 124.5633 l
354 | 0 0 0 RG
355 | /GS1 gs
356 | 0.75 w
357 | 0 j
358 | 0 0.1373 0.7176 rg
359 | /GS0 gs
360 | b
361 | 327.0847 211.5029 m
362 | 339.4068 199.1808 l
363 | 327.0847 186.8588 l
364 | 314.7627 199.1808 l
365 | 0 0 0 RG
366 | /GS1 gs
367 | 0.75 w
368 | 0 j
369 | 0 0.1373 0.7176 rg
370 | /GS0 gs
371 | b
372 | 239.4973 91.8794 m
373 | 251.8194 79.5573 l
374 | 239.4973 67.2353 l
375 | 227.1753 79.5573 l
376 | 0 0 0 RG
377 | /GS1 gs
378 | 0.75 w
379 | 0 j
380 | 0 0.1373 0.7176 rg
381 | /GS0 gs
382 | b
383 | 198.4296 158.3096 m
384 | 210.7516 145.9876 l
385 | 198.4296 133.6655 l
386 | 186.1075 145.9876 l
387 | 0 0 0 RG
388 | /GS1 gs
389 | 0.75 w
390 | 0 j
391 | 0 0.1373 0.7176 rg
392 | /GS0 gs
393 | b
394 | 263.5876 122.3549 m
395 | 275.9096 110.0328 l
396 | 263.5876 97.7108 l
397 | 251.2655 110.0328 l
398 | 0 0 0 RG
399 | /GS1 gs
400 | 0.75 w
401 | 0 j
402 | 0 0.1373 0.7176 rg
403 | /GS0 gs
404 | b
405 | 350.7608 247.6451 m
406 | 363.0829 235.3231 l
407 | 350.7608 223.001 l
408 | 338.4388 235.3231 l
409 | 0 0 0 RG
410 | /GS1 gs
411 | 0.75 w
412 | 0 j
413 | 0 0.1373 0.7176 rg
414 | /GS0 gs
415 | b
416 | 244.9187 111.6457 m
417 | 257.2408 99.3237 l
418 | 244.9187 87.0016 l
419 | 232.5967 99.3237 l
420 | 0 0 0 RG
421 | /GS1 gs
422 | 0.75 w
423 | 0 j
424 | 0 0.1373 0.7176 rg
425 | /GS0 gs
426 | b
427 | 173.7852 59.0242 m
428 | 186.1072 46.7022 l
429 | 173.7852 34.3801 l
430 | 161.4631 46.7022 l
431 | 0 0 0 RG
432 | /GS1 gs
433 | 0.75 w
434 | 0 j
435 | 0 0.1373 0.7176 rg
436 | /GS0 gs
437 | b
438 | 279.8903 156.4242 m
439 | 292.2123 144.1022 l
440 | 279.8903 131.7801 l
441 | 267.5682 144.1022 l
442 | 0 0 0 RG
443 | /GS1 gs
444 | 0.75 w
445 | 0 j
446 | 0 0.1373 0.7176 rg
447 | /GS0 gs
448 | b
449 | 207.5471 73.0751 m
450 | 219.8691 60.7531 l
451 | 207.5471 48.431 l
452 | 195.225 60.7531 l
453 | 0 0 0 RG
454 | /GS1 gs
455 | 0.75 w
456 | 0 j
457 | 0 0.1373 0.7176 rg
458 | /GS0 gs
459 | b
460 | 431.9583 359.0761 m
461 | 444.2803 346.7541 l
462 | 431.9583 334.432 l
463 | 419.6362 346.7541 l
464 | 0 0 0 RG
465 | /GS1 gs
466 | 0.75 w
467 | 0 j
468 | 0 0.1373 0.7176 rg
469 | /GS0 gs
470 | b
471 | 520.2507 260.2581 m
472 | 532.5728 247.9361 l
473 | 520.2507 235.614 l
474 | 507.9287 247.9361 l
475 | 0 0 0 RG
476 | /GS1 gs
477 | 0.75 w
478 | 0 j
479 | 0 0.1373 0.7176 rg
480 | /GS0 gs
481 | b
482 | 206.8946 127.654 m
483 | 219.2166 115.332 l
484 | 206.8946 103.0099 l
485 | 194.5725 115.332 l
486 | 0 0 0 RG
487 | /GS1 gs
488 | 0.75 w
489 | 0 j
490 | 0 0.1373 0.7176 rg
491 | /GS0 gs
492 | b
493 | 319.791 237.148 m
494 | 332.1131 224.826 l
495 | 319.791 212.5039 l
496 | 307.469 224.826 l
497 | 0 0 0 RG
498 | /GS1 gs
499 | 0.75 w
500 | 0 j
501 | 0 0.1373 0.7176 rg
502 | /GS0 gs
503 | b
504 | 168.0308 218.966 m
505 | 180.3528 206.6439 l
506 | 168.0308 194.3219 l
507 | 155.7087 206.6439 l
508 | 0 0 0 RG
509 | /GS1 gs
510 | 0.75 w
511 | 0 j
512 | 0 0.1373 0.7176 rg
513 | /GS0 gs
514 | b
515 | 485.132 180.521 m
516 | 497.454 168.199 l
517 | 485.132 155.8769 l
518 | 472.8099 168.199 l
519 | 0 0 0 RG
520 | /GS1 gs
521 | 0.75 w
522 | 0 j
523 | 0 0.1373 0.7176 rg
524 | /GS0 gs
525 | b
526 | 404.4939 145.0799 m
527 | 416.816 132.7579 l
528 | 404.4939 120.4358 l
529 | 392.1719 132.7579 l
530 | 0 0 0 RG
531 | /GS1 gs
532 | 0.75 w
533 | 0 j
534 | 0 0.1373 0.7176 rg
535 | /GS0 gs
536 | b
537 | 389.8738 245.2193 m
538 | 402.1959 232.8972 l
539 | 389.8738 220.5752 l
540 | 377.5518 232.8972 l
541 | 0 0 0 RG
542 | /GS1 gs
543 | 0.75 w
544 | 0 j
545 | 0 0.1373 0.7176 rg
546 | /GS0 gs
547 | b
548 | 300.2215 180.3282 m
549 | 312.5436 168.0061 l
550 | 300.2215 155.6841 l
551 | 287.8995 168.0061 l
552 | 0 0 0 RG
553 | /GS1 gs
554 | 0.75 w
555 | 0 j
556 | 0 0.1373 0.7176 rg
557 | /GS0 gs
558 | b
559 | 272.1727 182.3782 m
560 | 284.4948 170.0561 l
561 | 272.1727 157.7341 l
562 | 259.8506 170.0561 l
563 | 0 0 0 RG
564 | /GS1 gs
565 | 0.75 w
566 | 0 j
567 | 0 0.1373 0.7176 rg
568 | /GS0 gs
569 | b
570 | 357.915 97.546 m
571 | 370.237 85.2239 l
572 | 357.915 72.9019 l
573 | 345.5929 85.2239 l
574 | 0 0 0 RG
575 | /GS1 gs
576 | 0.75 w
577 | 0 j
578 | 0.7373 0.3529 0.8039 rg
579 | /GS3 gs
580 | b
581 | 343.1458 101.5832 m
582 | 355.4678 89.2612 l
583 | 343.1458 76.9391 l
584 | 330.8237 89.2612 l
585 | 0 0 0 RG
586 | /GS1 gs
587 | 0.75 w
588 | 0 j
589 | 0.7373 0.3529 0.8039 rg
590 | /GS3 gs
591 | b
592 | 271.7013 258.3891 m
593 | 284.0233 246.0671 l
594 | 271.7013 233.745 l
595 | 259.3792 246.0671 l
596 | 0 0 0 RG
597 | /GS1 gs
598 | 0.75 w
599 | 0 j
600 | 0.7373 0.3529 0.8039 rg
601 | /GS3 gs
602 | b
603 | 52.1331 26.6596 m
604 | 64.4551 14.3375 l
605 | 52.1331 2.0155 l
606 | 39.811 14.3375 l
607 | 0 0 0 RG
608 | /GS1 gs
609 | 0.75 w
610 | 0 j
611 | 0.7373 0.3529 0.8039 rg
612 | /GS3 gs
613 | b
614 | 380.8798 187.6742 m
615 | 393.2019 175.3521 l
616 | 380.8798 163.0301 l
617 | 368.5577 175.3521 l
618 | 0 0 0 RG
619 | /GS1 gs
620 | 0.75 w
621 | 0 j
622 | 0.7373 0.3529 0.8039 rg
623 | /GS3 gs
624 | b
625 | 293.0511 207.6852 m
626 | 305.3731 195.3631 l
627 | 293.0511 183.0411 l
628 | 280.729 195.3631 l
629 | 0 0 0 RG
630 | /GS1 gs
631 | 0.75 w
632 | 0 j
633 | 0.7373 0.3529 0.8039 rg
634 | /GS3 gs
635 | b
636 | 259.8998 141.0226 m
637 | 272.2218 128.7005 l
638 | 259.8998 116.3785 l
639 | 247.5777 128.7005 l
640 | 0 0 0 RG
641 | /GS1 gs
642 | 0.75 w
643 | 0 j
644 | 0.7373 0.3529 0.8039 rg
645 | /GS3 gs
646 | b
647 | 382.6418 123.5483 m
648 | 394.9639 111.2263 l
649 | 382.6418 98.9042 l
650 | 370.3197 111.2263 l
651 | 0 0 0 RG
652 | /GS1 gs
653 | 0.75 w
654 | 0 j
655 | 0.7373 0.3529 0.8039 rg
656 | /GS3 gs
657 | b
658 | 66.5113 30.8924 m
659 | 78.8334 18.5704 l
660 | 66.5113 6.2483 l
661 | 54.1893 18.5704 l
662 | 0 0 0 RG
663 | /GS1 gs
664 | 0.75 w
665 | 0 j
666 | 0.7373 0.3529 0.8039 rg
667 | /GS3 gs
668 | b
669 | 261.3907 213.0716 m
670 | 273.7128 200.7495 l
671 | 261.3907 188.4274 l
672 | 249.0687 200.7495 l
673 | 0 0 0 RG
674 | /GS1 gs
675 | 0.75 w
676 | 0 j
677 | 0.7373 0.3529 0.8039 rg
678 | /GS3 gs
679 | b
680 | 262.3502 73.2701 m
681 | 274.6722 60.948 l
682 | 262.3502 48.626 l
683 | 250.0281 60.948 l
684 | 0 0 0 RG
685 | /GS1 gs
686 | 0.75 w
687 | 0 j
688 | 0.7373 0.3529 0.8039 rg
689 | /GS3 gs
690 | b
691 | 375.6423 281.2998 m
692 | 387.9644 268.9777 l
693 | 375.6423 256.6557 l
694 | 363.3203 268.9777 l
695 | 0 0 0 RG
696 | /GS1 gs
697 | 0.75 w
698 | 0 j
699 | 0.7373 0.3529 0.8039 rg
700 | /GS3 gs
701 | b
702 | 400.4222 115.3743 m
703 | 412.7443 103.0522 l
704 | 400.4222 90.7302 l
705 | 388.1002 103.0522 l
706 | 0 0 0 RG
707 | /GS1 gs
708 | 0.75 w
709 | 0 j
710 | 0.7373 0.3529 0.8039 rg
711 | /GS3 gs
712 | b
713 | 313.0555 170.4523 m
714 | 325.3775 158.1302 l
715 | 313.0555 145.8082 l
716 | 300.7334 158.1302 l
717 | 0 0 0 RG
718 | /GS1 gs
719 | 0.75 w
720 | 0 j
721 | 0.7373 0.3529 0.8039 rg
722 | /GS3 gs
723 | b
724 | 315.3659 113.2874 m
725 | 327.6879 100.9653 l
726 | 315.3659 88.6433 l
727 | 303.0438 100.9653 l
728 | 0 0 0 RG
729 | /GS1 gs
730 | 0.75 w
731 | 0 j
732 | 0.7373 0.3529 0.8039 rg
733 | /GS3 gs
734 | b
735 | 235.9706 87.7237 m
736 | 248.2926 75.4017 l
737 | 235.9706 63.0796 l
738 | 223.6485 75.4017 l
739 | 0 0 0 RG
740 | /GS1 gs
741 | 0.75 w
742 | 0 j
743 | 0.7373 0.3529 0.8039 rg
744 | /GS3 gs
745 | b
746 | 351.3299 69.4186 m
747 | 363.6519 57.0965 l
748 | 351.3299 44.7745 l
749 | 339.0078 57.0965 l
750 | 0 0 0 RG
751 | /GS1 gs
752 | 0.75 w
753 | 0 j
754 | 0.7373 0.3529 0.8039 rg
755 | /GS3 gs
756 | b
757 | 219.4841 146.25 m
758 | 231.8061 133.928 l
759 | 219.4841 121.6059 l
760 | 207.162 133.928 l
761 | 0 0 0 RG
762 | /GS1 gs
763 | 0.75 w
764 | 0 j
765 | 1 0.5373 0 rg
766 | /GS0 gs
767 | b
768 | 257.8768 29.9477 m
769 | 270.1989 17.6256 l
770 | 257.8768 5.3036 l
771 | 245.5548 17.6256 l
772 | 0 0 0 RG
773 | /GS1 gs
774 | 0.75 w
775 | 0 j
776 | 1 0.5373 0 rg
777 | /GS0 gs
778 | b
779 | 183.6345 195.3812 m
780 | 195.9566 183.0592 l
781 | 183.6345 170.7371 l
782 | 171.3125 183.0592 l
783 | 0 0 0 RG
784 | /GS1 gs
785 | 0.75 w
786 | 0 j
787 | 1 0.5373 0 rg
788 | /GS0 gs
789 | b
790 | 299.6912 192.0276 m
791 | 312.0133 179.7055 l
792 | 299.6912 167.3835 l
793 | 287.3691 179.7055 l
794 | 0 0 0 RG
795 | /GS1 gs
796 | 0.75 w
797 | 0 j
798 | 1 0.5373 0 rg
799 | /GS0 gs
800 | b
801 | 231.5971 53.7198 m
802 | 243.9191 41.3978 l
803 | 231.5971 29.0757 l
804 | 219.275 41.3978 l
805 | 0 0 0 RG
806 | /GS1 gs
807 | 0.75 w
808 | 0 j
809 | 1 0.5373 0 rg
810 | /GS0 gs
811 | b
812 | 305.7784 167.7951 m
813 | 318.1005 155.473 l
814 | 305.7784 143.151 l
815 | 293.4564 155.473 l
816 | 0 0 0 RG
817 | /GS1 gs
818 | 0.75 w
819 | 0 j
820 | 1 0.5373 0 rg
821 | /GS0 gs
822 | b
823 | 197.0418 189.3113 m
824 | 209.3638 176.9892 l
825 | 197.0418 164.6672 l
826 | 184.7197 176.9892 l
827 | 0 0 0 RG
828 | /GS1 gs
829 | 0.75 w
830 | 0 j
831 | 1 0.5373 0 rg
832 | /GS0 gs
833 | b
834 | 288.2522 126.0427 m
835 | 300.5742 113.7207 l
836 | 288.2522 101.3986 l
837 | 275.9301 113.7207 l
838 | 0 0 0 RG
839 | /GS1 gs
840 | 0.75 w
841 | 0 j
842 | 1 0.5373 0 rg
843 | /GS0 gs
844 | b
845 | 38.9806 23.7093 m
846 | 51.3026 11.3872 l
847 | 38.9806 -0.9348 l
848 | 26.6585 11.3872 l
849 | 0 0 0 RG
850 | /GS1 gs
851 | 0.75 w
852 | 0 j
853 | 1 0.5373 0 rg
854 | /GS0 gs
855 | b
856 | 283.4291 92.9877 m
857 | 295.7511 80.6657 l
858 | 283.4291 68.3436 l
859 | 271.107 80.6657 l
860 | 0 0 0 RG
861 | /GS1 gs
862 | 0.75 w
863 | 0 j
864 | 1 0.5373 0 rg
865 | /GS0 gs
866 | b
867 | 364.26 297.341 m
868 | 376.582 285.019 l
869 | 364.26 272.6969 l
870 | 351.9379 285.019 l
871 | 0 0 0 RG
872 | /GS1 gs
873 | 0.75 w
874 | 0 j
875 | 1 0.5373 0 rg
876 | /GS0 gs
877 | b
878 | 189.4954 75.6838 m
879 | 201.8175 63.3617 l
880 | 189.4954 51.0397 l
881 | 177.1733 63.3617 l
882 | 0 0 0 RG
883 | /GS1 gs
884 | 0.75 w
885 | 0 j
886 | 1 0.5373 0 rg
887 | /GS0 gs
888 | b
889 | 343.6033 224.5509 m
890 | 355.9253 212.2289 l
891 | 343.6033 199.9068 l
892 | 331.2812 212.2289 l
893 | 0 0 0 RG
894 | /GS1 gs
895 | 0.75 w
896 | 0 j
897 | 1 0.5373 0 rg
898 | /GS0 gs
899 | b
900 | 312.4226 109.0347 m
901 | 324.7447 96.7126 l
902 | 312.4226 84.3906 l
903 | 300.1006 96.7126 l
904 | 0 0 0 RG
905 | /GS1 gs
906 | 0.75 w
907 | 0 j
908 | 1 0.5373 0 rg
909 | /GS0 gs
910 | b
911 | 394.1122 191.0215 m
912 | 406.4342 178.6994 l
913 | 394.1122 166.3774 l
914 | 381.7901 178.6994 l
915 | 0 0 0 RG
916 | /GS1 gs
917 | 0.75 w
918 | 0 j
919 | 1 0.5373 0 rg
920 | /GS0 gs
921 | b
922 | 344.7113 121.0163 m
923 | 357.0333 108.6943 l
924 | 344.7113 96.3722 l
925 | 332.3892 108.6943 l
926 | 0 0 0 RG
927 | /GS1 gs
928 | 0.75 w
929 | 0 j
930 | 1 0.5373 0 rg
931 | /GS0 gs
932 | b
933 | 104.9602 57.838 m
934 | 117.2823 45.5159 l
935 | 104.9602 33.1939 l
936 | 92.6382 45.5159 l
937 | 0 0 0 RG
938 | /GS1 gs
939 | 0.75 w
940 | 0 j
941 | 1 0.5373 0 rg
942 | /GS0 gs
943 | b
944 | 313.2836 208.3984 m
945 | 325.6056 196.0764 l
946 | 313.2836 183.7543 l
947 | 300.9615 196.0764 l
948 | 0 0 0 RG
949 | /GS1 gs
950 | 0.75 w
951 | 0 j
952 | 1 0.5373 0 rg
953 | /GS0 gs
954 | b
955 | 112.0817 97.5241 m
956 | 124.4038 85.2021 l
957 | 112.0817 72.88 l
958 | 99.7597 85.2021 l
959 | 0 0 0 RG
960 | /GS1 gs
961 | 0.75 w
962 | 0 j
963 | 0.4157 0.7098 0 rg
964 | /GS0 gs
965 | b
966 | 247.4508 194.0773 m
967 | 259.7728 181.7552 l
968 | 247.4508 169.4332 l
969 | 235.1287 181.7552 l
970 | 0 0 0 RG
971 | /GS1 gs
972 | 0.75 w
973 | 0 j
974 | 0.4157 0.7098 0 rg
975 | /GS0 gs
976 | b
977 | 162.386 25.2404 m
978 | 174.7081 12.9184 l
979 | 162.386 0.5963 l
980 | 150.064 12.9184 l
981 | 0 0 0 RG
982 | /GS1 gs
983 | 0.75 w
984 | 0 j
985 | 0.4157 0.7098 0 rg
986 | /GS0 gs
987 | b
988 | 379.6169 261.6147 m
989 | 391.939 249.2927 l
990 | 379.6169 236.9706 l
991 | 367.2949 249.2927 l
992 | 0 0 0 RG
993 | /GS1 gs
994 | 0.75 w
995 | 0 j
996 | 0.4157 0.7098 0 rg
997 | /GS0 gs
998 | b
999 | 263.2858 252.2156 m
1000 | 275.6078 239.8935 l
1001 | 263.2858 227.5715 l
1002 | 250.9637 239.8935 l
1003 | 0 0 0 RG
1004 | /GS1 gs
1005 | 0.75 w
1006 | 0 j
1007 | 0.4157 0.7098 0 rg
1008 | /GS0 gs
1009 | b
1010 | 272.9566 112.3492 m
1011 | 285.2786 100.0272 l
1012 | 272.9566 87.7051 l
1013 | 260.6345 100.0272 l
1014 | 0 0 0 RG
1015 | /GS1 gs
1016 | 0.75 w
1017 | 0 j
1018 | 0.4157 0.7098 0 rg
1019 | /GS0 gs
1020 | b
1021 | 293.2491 104.8286 m
1022 | 305.5712 92.5066 l
1023 | 293.2491 80.1845 l
1024 | 280.927 92.5066 l
1025 | 0 0 0 RG
1026 | /GS1 gs
1027 | 0.75 w
1028 | 0 j
1029 | 0.4157 0.7098 0 rg
1030 | /GS0 gs
1031 | b
1032 | 377.146 142.8156 m
1033 | 389.4681 130.4936 l
1034 | 377.146 118.1715 l
1035 | 364.824 130.4936 l
1036 | 0 0 0 RG
1037 | /GS1 gs
1038 | 0.75 w
1039 | 0 j
1040 | 0.4157 0.7098 0 rg
1041 | /GS0 gs
1042 | b
1043 | 383.3195 159.8469 m
1044 | 395.6416 147.5248 l
1045 | 383.3195 135.2028 l
1046 | 370.9975 147.5248 l
1047 | 0 0 0 RG
1048 | /GS1 gs
1049 | 0.75 w
1050 | 0 j
1051 | 0.4157 0.7098 0 rg
1052 | /GS0 gs
1053 | b
1054 | 292.3123 168.6124 m
1055 | 304.6344 156.2903 l
1056 | 292.3123 143.9683 l
1057 | 279.9903 156.2903 l
1058 | 0 0 0 RG
1059 | /GS1 gs
1060 | 0.75 w
1061 | 0 j
1062 | 0.4157 0.7098 0 rg
1063 | /GS0 gs
1064 | b
1065 | 335.2245 108.5517 m
1066 | 347.5465 96.2297 l
1067 | 335.2245 83.9076 l
1068 | 322.9024 96.2297 l
1069 | 0 0 0 RG
1070 | /GS1 gs
1071 | 0.75 w
1072 | 0 j
1073 | 0.4157 0.7098 0 rg
1074 | /GS0 gs
1075 | b
1076 | 304.8774 236.529 m
1077 | 317.1995 224.2069 l
1078 | 304.8774 211.8849 l
1079 | 292.5554 224.2069 l
1080 | 0 0 0 RG
1081 | /GS1 gs
1082 | 0.75 w
1083 | 0 j
1084 | 0.4157 0.7098 0 rg
1085 | /GS0 gs
1086 | b
1087 | 13.122 34.8488 m
1088 | 25.4441 22.5267 l
1089 | 13.122 10.2047 l
1090 | 0.7999 22.5267 l
1091 | 0 0 0 RG
1092 | /GS1 gs
1093 | 0.75 w
1094 | 0 j
1095 | 0.4157 0.7098 0 rg
1096 | /GS0 gs
1097 | b
1098 | 273.2517 159.2688 m
1099 | 285.5737 146.9467 l
1100 | 273.2517 134.6246 l
1101 | 260.9296 146.9467 l
1102 | 0 0 0 RG
1103 | /GS1 gs
1104 | 0.75 w
1105 | 0 j
1106 | 0.4157 0.7098 0 rg
1107 | /GS0 gs
1108 | b
1109 | 371.2718 211.3865 m
1110 | 383.5939 199.0645 l
1111 | 371.2718 186.7424 l
1112 | 358.9498 199.0645 l
1113 | 0 0 0 RG
1114 | /GS1 gs
1115 | 0.75 w
1116 | 0 j
1117 | 0.4157 0.7098 0 rg
1118 | /GS0 gs
1119 | b
1120 | 294.9236 179.4017 m
1121 | 307.2457 167.0796 l
1122 | 294.9236 154.7576 l
1123 | 282.6015 167.0796 l
1124 | 0 0 0 RG
1125 | /GS1 gs
1126 | 0.75 w
1127 | 0 j
1128 | 0.4157 0.7098 0 rg
1129 | /GS0 gs
1130 | b
1131 | Q
1132 | q
1133 | 0 0 0 rg
1134 | /GS0 gs
1135 | 1 0 0 1 266.661 392 cm
1136 | 1 0 0 1 -63.666 -13.404 cm
1137 | BT
1138 | /F2 12 Tf
1139 | 0 2.544 Td
1140 | (aMBey9Gf0vhyk9 kxEl) Tj
1141 | ET
1142 | Q
1143 | endstream
1144 | endobj
1145 | 6 0 obj
1146 | <<
1147 | /Type /Page
1148 | /Parent 3 0 R
1149 | /MediaBox [0 0 600 400]
1150 | /Contents 5 0 R
1151 | /Resources 4 0 R
1152 | >>
1153 | endobj
1154 | 7 0 obj
1155 | <<
1156 | /Type /ExtGState
1157 | /ca 1
1158 | >>
1159 | endobj
1160 | 8 0 obj
1161 | <<
1162 | /Type /FontDescriptor
1163 | /Ascent 905
1164 | /CapHeight 716
1165 | /Descent -212
1166 | /Flags 32
1167 | /FontBBox [-665 -325 2046 1040]
1168 | /ItalicAngle 0
1169 | /StemV 0
1170 | /XHeight 519
1171 | /FontName /Arial
1172 | >>
1173 | endobj
1174 | 9 0 obj
1175 | <<
1176 | /Type /Font
1177 | /Subtype /TrueType
1178 | /Encoding /WinAnsiEncoding
1179 | /BaseFont /Arial
1180 | /FontDescriptor 8 0 R
1181 | /FirstChar 0
1182 | /LastChar 255
1183 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 277 354 556 556 889 666 190 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 277 277 583 583 583 556 1015 666 666 722 722 666 610 777 722 277 500 666 556 833 722 777 666 777 722 666 610 722 666 943 666 666 610 277 277 277 469 556 333 556 556 500 556 556 277 556 556 222 222 500 222 833 556 556 556 556 333 500 277 556 500 722 500 500 500 333 259 333 583 750 556 750 222 556 333 1000 556 556 333 1000 666 333 1000 750 610 750 750 222 222 333 333 350 556 1000 333 1000 500 333 943 750 500 666 277 333 556 556 556 556 259 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 537 333 333 333 365 556 833 833 833 610 666 666 666 666 666 666 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 500 556 556 556 556 277 277 277 277 556 556 556 556 556 556 556 548 610 556 556 556 556 500 556 500]
1184 | >>
1185 | endobj
1186 | 10 0 obj
1187 | <<
1188 | /Type /ExtGState
1189 | /CA 1
1190 | >>
1191 | endobj
1192 | 11 0 obj
1193 | <<
1194 | /Type /ExtGState
1195 | /CA 0.250980392156863
1196 | >>
1197 | endobj
1198 | 12 0 obj
1199 | <<
1200 | /Type /ExtGState
1201 | /ca 0.996078431372549
1202 | >>
1203 | endobj
1204 | 13 0 obj
1205 | <<
1206 | /Type /FontDescriptor
1207 | /Ascent 905
1208 | /CapHeight 716
1209 | /Descent -212
1210 | /Flags 32
1211 | /FontBBox [-628 -376 2000 1056]
1212 | /ItalicAngle 0
1213 | /StemV 0
1214 | /XHeight 519
1215 | /FontName /Arial,Bold
1216 | >>
1217 | endobj
1218 | 14 0 obj
1219 | <<
1220 | /Type /Font
1221 | /Subtype /TrueType
1222 | /Encoding /WinAnsiEncoding
1223 | /BaseFont /Arial,Bold
1224 | /FontDescriptor 13 0 R
1225 | /FirstChar 0
1226 | /LastChar 255
1227 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 333 474 556 556 889 722 237 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 333 333 583 583 583 610 975 722 722 722 722 666 610 777 722 277 556 722 610 833 722 777 666 777 722 666 610 722 666 943 666 666 610 333 277 333 583 556 333 556 610 556 610 556 333 610 610 277 277 556 277 889 610 610 610 610 389 556 333 610 556 777 556 556 500 389 279 389 583 750 556 750 277 556 500 1000 556 556 333 1000 666 333 1000 750 610 750 750 277 277 500 500 350 556 1000 333 1000 556 333 943 750 500 666 277 333 556 556 556 556 279 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 556 333 333 333 365 556 833 833 833 610 722 722 722 722 722 722 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 556 556 556 556 556 277 277 277 277 610 610 610 610 610 610 610 548 610 610 610 610 610 556 610 556]
1228 | >>
1229 | endobj
1230 | xref
1231 | 0 15
1232 | 0000000000 65535 f
1233 | 0000000009 00000 n
1234 | 0000000069 00000 n
1235 | 0000000118 00000 n
1236 | 0000000175 00000 n
1237 | 0000000354 00000 n
1238 | 0000014381 00000 n
1239 | 0000014485 00000 n
1240 | 0000014529 00000 n
1241 | 0000014709 00000 n
1242 | 0000015895 00000 n
1243 | 0000015940 00000 n
1244 | 0000016001 00000 n
1245 | 0000016062 00000 n
1246 | 0000016248 00000 n
1247 | trailer
1248 | <<
1249 | /Size 15
1250 | /Root 2 0 R
1251 | /Info 1 0 R
1252 | >>
1253 | startxref
1254 | 17440
1255 | %%EOF
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/oxyplot_5.pdf:
--------------------------------------------------------------------------------
1 | %PDF-1.3
2 | 1 0 obj
3 | <<
4 | /CreationDate (D:20190902205400+01'00)
5 | >>
6 | endobj
7 | 2 0 obj
8 | <<
9 | /Type /Catalog
10 | /Pages 3 0 R
11 | >>
12 | endobj
13 | 3 0 obj
14 | <<
15 | /Type /Pages
16 | /Count 1
17 | /Kids [6 0 R]
18 | >>
19 | endobj
20 | 4 0 obj
21 | <<
22 | /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
23 | /Font <<
24 | /F1 9 0 R
25 | /F2 13 0 R
26 | >>
27 | /XObject <<
28 | >>
29 | /ExtGState <<
30 | /GS0 7 0 R
31 | /GS1 10 0 R
32 | /GS2 11 0 R
33 | >>
34 | >>
35 | endobj
36 | 5 0 obj
37 | <<
38 | /Length 6294
39 | >>
40 | stream
41 | q
42 | 0 0 0 rg
43 | /GS0 gs
44 | 1 0 0 1 50.17452 338.437 cm
45 | 1 0 0 1 -3.1275 0 cm
46 | BT
47 | /F1 11.25 Tf
48 | 0 2.385 Td
49 | (0) Tj
50 | ET
51 | Q
52 | q
53 | 0 0 0 rg
54 | /GS0 gs
55 | 1 0 0 1 149.83099 338.437 cm
56 | 1 0 0 1 -12.51 0 cm
57 | BT
58 | /F1 11.25 Tf
59 | 0 2.385 Td
60 | (2000) Tj
61 | ET
62 | Q
63 | q
64 | 0 0 0 rg
65 | /GS0 gs
66 | 1 0 0 1 249.48747 338.437 cm
67 | 1 0 0 1 -12.51 0 cm
68 | BT
69 | /F1 11.25 Tf
70 | 0 2.385 Td
71 | (4000) Tj
72 | ET
73 | Q
74 | q
75 | 0 0 0 rg
76 | /GS0 gs
77 | 1 0 0 1 349.14394 338.437 cm
78 | 1 0 0 1 -12.51 0 cm
79 | BT
80 | /F1 11.25 Tf
81 | 0 2.385 Td
82 | (6000) Tj
83 | ET
84 | Q
85 | q
86 | 0 0 0 rg
87 | /GS0 gs
88 | 1 0 0 1 448.80041 338.437 cm
89 | 1 0 0 1 -12.51 0 cm
90 | BT
91 | /F1 11.25 Tf
92 | 0 2.385 Td
93 | (8000) Tj
94 | ET
95 | Q
96 | q
97 | 0 0 0 rg
98 | /GS0 gs
99 | 1 0 0 1 548.45688 338.437 cm
100 | 1 0 0 1 -15.6375 0 cm
101 | BT
102 | /F1 11.25 Tf
103 | 0 2.385 Td
104 | (10000) Tj
105 | ET
106 | Q
107 | 0 0 0 RG
108 | /GS1 gs
109 | 0.75 w
110 | 0 j
111 | 37.9321 334.437 m
112 | 592 334.437 l
113 | S
114 | 0 0 0 RG
115 | /GS2 gs
116 | 0.75 w
117 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
118 | 0 j
119 | 50.1745 334.437 m
120 | 50.1745 8 l
121 | S
122 | []0 d
123 | 0 0 0 RG
124 | /GS2 gs
125 | 0.75 w
126 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
127 | 0 j
128 | 149.831 334.437 m
129 | 149.831 8 l
130 | S
131 | []0 d
132 | 0 0 0 RG
133 | /GS2 gs
134 | 0.75 w
135 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
136 | 0 j
137 | 249.4875 334.437 m
138 | 249.4875 8 l
139 | S
140 | []0 d
141 | 0 0 0 RG
142 | /GS2 gs
143 | 0.75 w
144 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
145 | 0 j
146 | 349.1439 334.437 m
147 | 349.1439 8 l
148 | S
149 | []0 d
150 | 0 0 0 RG
151 | /GS2 gs
152 | 0.75 w
153 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
154 | 0 j
155 | 448.8004 334.437 m
156 | 448.8004 8 l
157 | S
158 | []0 d
159 | 0 0 0 RG
160 | /GS2 gs
161 | 0.75 w
162 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
163 | 0 j
164 | 548.4569 334.437 m
165 | 548.4569 8 l
166 | S
167 | []0 d
168 | 0 0 0 RG
169 | /GS1 gs
170 | 0.75 w
171 | 0 j
172 | 50.1745 325.1559 m
173 | 50.1745 334.437 l
174 | S
175 | 0 0 0 RG
176 | /GS1 gs
177 | 0.75 w
178 | 0 j
179 | 149.831 325.1559 m
180 | 149.831 334.437 l
181 | S
182 | 0 0 0 RG
183 | /GS1 gs
184 | 0.75 w
185 | 0 j
186 | 249.4875 325.1559 m
187 | 249.4875 334.437 l
188 | S
189 | 0 0 0 RG
190 | /GS1 gs
191 | 0.75 w
192 | 0 j
193 | 349.1439 325.1559 m
194 | 349.1439 334.437 l
195 | S
196 | 0 0 0 RG
197 | /GS1 gs
198 | 0.75 w
199 | 0 j
200 | 448.8004 325.1559 m
201 | 448.8004 334.437 l
202 | S
203 | 0 0 0 RG
204 | /GS1 gs
205 | 0.75 w
206 | 0 j
207 | 548.4569 325.1559 m
208 | 548.4569 334.437 l
209 | S
210 | q
211 | 0 0 0 rg
212 | /GS0 gs
213 | 1 0 0 1 314.96603 363.5695 cm
214 | 1 0 0 1 -23.55 -8.3775 cm
215 | BT
216 | /F1 7.5 Tf
217 | 0 1.59 Td
218 | (wLwah4D5i19) Tj
219 | ET
220 | Q
221 | q
222 | 0 0 0 rg
223 | /GS0 gs
224 | 1 0 0 1 24.65092 35.07241 cm
225 | 0.28283 -0.95917 0.95917 0.28283 0 0 cm
226 | 1 0 0 1 -16.25625 -6.28313 cm
227 | BT
228 | /F1 11.25 Tf
229 | 0 2.385 Td
230 | (-40) Tj
231 | ET
232 | Q
233 | q
234 | 0 0 0 rg
235 | /GS0 gs
236 | 1 0 0 1 24.65092 124.55464 cm
237 | 0.28283 -0.95917 0.95917 0.28283 0 0 cm
238 | 1 0 0 1 -16.25625 -6.28313 cm
239 | BT
240 | /F1 11.25 Tf
241 | 0 2.385 Td
242 | (-38) Tj
243 | ET
244 | Q
245 | q
246 | 0 0 0 rg
247 | /GS0 gs
248 | 1 0 0 1 24.65092 214.03687 cm
249 | 0.28283 -0.95917 0.95917 0.28283 0 0 cm
250 | 1 0 0 1 -16.25625 -6.28313 cm
251 | BT
252 | /F1 11.25 Tf
253 | 0 2.385 Td
254 | (-36) Tj
255 | ET
256 | Q
257 | q
258 | 0 0 0 rg
259 | /GS0 gs
260 | 1 0 0 1 24.65092 303.51909 cm
261 | 0.28283 -0.95917 0.95917 0.28283 0 0 cm
262 | 1 0 0 1 -16.25625 -6.28313 cm
263 | BT
264 | /F1 11.25 Tf
265 | 0 2.385 Td
266 | (-34) Tj
267 | ET
268 | Q
269 | 0 0 0 RG
270 | /GS1 gs
271 | 0.75 w
272 | 0 j
273 | 37.9321 8 m
274 | 37.9321 334.437 l
275 | S
276 | 0 0 0 RG
277 | /GS2 gs
278 | 0.75 w
279 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
280 | 0 j
281 | 37.9321 35.0724 m
282 | 592 35.0724 l
283 | S
284 | []0 d
285 | 0 0 0 RG
286 | /GS2 gs
287 | 0.75 w
288 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
289 | 0 j
290 | 37.9321 124.5546 m
291 | 592 124.5546 l
292 | S
293 | []0 d
294 | 0 0 0 RG
295 | /GS2 gs
296 | 0.75 w
297 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
298 | 0 j
299 | 37.9321 214.0369 m
300 | 592 214.0369 l
301 | S
302 | []0 d
303 | 0 0 0 RG
304 | /GS2 gs
305 | 0.75 w
306 | [7.5 0.75 0.75 0.75 0.75 0.75]0 d
307 | 0 j
308 | 37.9321 303.5191 m
309 | 592 303.5191 l
310 | S
311 | []0 d
312 | 0 0 0 RG
313 | /GS1 gs
314 | 0.75 w
315 | 0 j
316 | 37.9321 35.0724 m
317 | 28.6509 35.0724 l
318 | S
319 | 0 0 0 RG
320 | /GS1 gs
321 | 0.75 w
322 | 0 j
323 | 37.9321 124.5546 m
324 | 28.6509 124.5546 l
325 | S
326 | 0 0 0 RG
327 | /GS1 gs
328 | 0.75 w
329 | 0 j
330 | 37.9321 214.0369 m
331 | 28.6509 214.0369 l
332 | S
333 | 0 0 0 RG
334 | /GS1 gs
335 | 0.75 w
336 | 0 j
337 | 37.9321 303.5191 m
338 | 28.6509 303.5191 l
339 | S
340 | q
341 | 233.1674 142.3855 m
342 | 245.1882 142.3855 l
343 | 239.1778 152.7958 l
344 | 0 0 0 RG
345 | /GS1 gs
346 | 0.75 w
347 | 0 j
348 | 0.851 0.4353 0 rg
349 | /GS0 gs
350 | b
351 | 37.4075 49.3251 m
352 | 49.4283 49.3251 l
353 | 43.4179 59.7354 l
354 | 0 0 0 RG
355 | /GS1 gs
356 | 0.75 w
357 | 0 j
358 | 0.851 0.4353 0 rg
359 | /GS0 gs
360 | b
361 | 99.455 7.7619 m
362 | 111.4758 7.7619 l
363 | 105.4654 18.1723 l
364 | 0 0 0 RG
365 | /GS1 gs
366 | 0.75 w
367 | 0 j
368 | 0.851 0.4353 0 rg
369 | /GS0 gs
370 | b
371 | 100.4511 217.5805 m
372 | 112.4719 217.5805 l
373 | 106.4615 227.9908 l
374 | 0 0 0 RG
375 | /GS1 gs
376 | 0.75 w
377 | 0 j
378 | 0.851 0.4353 0 rg
379 | /GS0 gs
380 | b
381 | 161.1588 315.0245 m
382 | 173.1796 315.0245 l
383 | 167.1692 325.4349 l
384 | 0 0 0 RG
385 | /GS1 gs
386 | 0.75 w
387 | 0 j
388 | 0.851 0.4353 0 rg
389 | /GS0 gs
390 | b
391 | 272.6917 82.9644 m
392 | 284.7126 82.9644 l
393 | 278.7021 93.3747 l
394 | 0 0 0 RG
395 | /GS1 gs
396 | 0.75 w
397 | 0 j
398 | 0.851 0.4353 0 rg
399 | /GS0 gs
400 | b
401 | 54.5896 175.2342 m
402 | 66.6104 175.2342 l
403 | 60.6 185.6446 l
404 | 0 0 0 RG
405 | /GS1 gs
406 | 0.75 w
407 | 0 j
408 | 0.851 0.4353 0 rg
409 | /GS0 gs
410 | b
411 | 364.8306 57.6445 m
412 | 376.8514 57.6445 l
413 | 370.841 68.0548 l
414 | 0 0 0 RG
415 | /GS1 gs
416 | 0.75 w
417 | 0 j
418 | 0.851 0.4353 0 rg
419 | /GS0 gs
420 | b
421 | 541.4752 294.1459 m
422 | 553.4961 294.1459 l
423 | 547.4857 304.5562 l
424 | 0 0 0 RG
425 | /GS1 gs
426 | 0.75 w
427 | 0 j
428 | 0.851 0.4353 0 rg
429 | /GS0 gs
430 | b
431 | 375.8916 75.3463 m
432 | 387.9124 75.3463 l
433 | 381.902 85.7566 l
434 | 0 0 0 RG
435 | /GS1 gs
436 | 0.75 w
437 | 0 j
438 | 0.7882 0.349 0 rg
439 | /GS0 gs
440 | b
441 | 161.633 158.1821 m
442 | 173.6538 158.1821 l
443 | 167.6434 168.5924 l
444 | 0 0 0 RG
445 | /GS1 gs
446 | 0.75 w
447 | 0 j
448 | 0.7882 0.349 0 rg
449 | /GS0 gs
450 | b
451 | 112.7219 308.929 m
452 | 124.7427 308.929 l
453 | 118.7323 319.3393 l
454 | 0 0 0 RG
455 | /GS1 gs
456 | 0.75 w
457 | 0 j
458 | 0.7882 0.349 0 rg
459 | /GS0 gs
460 | b
461 | 137.9113 167.0287 m
462 | 149.9321 167.0287 l
463 | 143.9217 177.439 l
464 | 0 0 0 RG
465 | /GS1 gs
466 | 0.75 w
467 | 0 j
468 | 0.7882 0.349 0 rg
469 | /GS0 gs
470 | b
471 | 506.0129 41.1549 m
472 | 518.0337 41.1549 l
473 | 512.0233 51.5652 l
474 | 0 0 0 RG
475 | /GS1 gs
476 | 0.75 w
477 | 0 j
478 | 0.7882 0.349 0 rg
479 | /GS0 gs
480 | b
481 | 373.071 327.7668 m
482 | 385.0918 327.7668 l
483 | 379.0814 338.1772 l
484 | 0 0 0 RG
485 | /GS1 gs
486 | 0.75 w
487 | 0 j
488 | 0.7882 0.349 0 rg
489 | /GS0 gs
490 | b
491 | 457.8212 147.8263 m
492 | 469.842 147.8263 l
493 | 463.8316 158.2367 l
494 | 0 0 0 RG
495 | /GS1 gs
496 | 0.75 w
497 | 0 j
498 | 0.7882 0.349 0 rg
499 | /GS0 gs
500 | b
501 | 275.8495 275.4417 m
502 | 287.8703 275.4417 l
503 | 281.8599 285.852 l
504 | 0 0 0 RG
505 | /GS1 gs
506 | 0.75 w
507 | 0 j
508 | 0.7882 0.349 0 rg
509 | /GS0 gs
510 | b
511 | 71.2719 112.2581 m
512 | 83.2927 112.2581 l
513 | 77.2823 122.6685 l
514 | 0 0 0 RG
515 | /GS1 gs
516 | 0.75 w
517 | 0 j
518 | 0.851 0.4353 0 rg
519 | /GS0 gs
520 | b
521 | 233.8975 94.2707 m
522 | 245.9183 94.2707 l
523 | 239.9079 104.6811 l
524 | 0 0 0 RG
525 | /GS1 gs
526 | 0.75 w
527 | 0 j
528 | 0.851 0.4353 0 rg
529 | /GS0 gs
530 | b
531 | 580.5581 195.6095 m
532 | 592.5789 195.6095 l
533 | 586.5685 206.0198 l
534 | 0 0 0 RG
535 | /GS1 gs
536 | 0.75 w
537 | 0 j
538 | 0.851 0.4353 0 rg
539 | /GS0 gs
540 | b
541 | 376.9755 190.3562 m
542 | 388.9963 190.3562 l
543 | 382.9859 200.7665 l
544 | 0 0 0 RG
545 | /GS1 gs
546 | 0.75 w
547 | 0 j
548 | 0.851 0.4353 0 rg
549 | /GS0 gs
550 | b
551 | Q
552 | q
553 | 0 0 0 rg
554 | /GS0 gs
555 | 1 0 0 1 314.96603 392 cm
556 | 1 0 0 1 -112.2165 -18.4305 cm
557 | BT
558 | /F2 16.5 Tf
559 | 0 3.498 Td
560 | (76xVkN Fa Qr XSfYCTQGQ9) Tj
561 | ET
562 | Q
563 | endstream
564 | endobj
565 | 6 0 obj
566 | <<
567 | /Type /Page
568 | /Parent 3 0 R
569 | /MediaBox [0 0 600 400]
570 | /Contents 5 0 R
571 | /Resources 4 0 R
572 | >>
573 | endobj
574 | 7 0 obj
575 | <<
576 | /Type /ExtGState
577 | /ca 1
578 | >>
579 | endobj
580 | 8 0 obj
581 | <<
582 | /Type /FontDescriptor
583 | /Ascent 905
584 | /CapHeight 716
585 | /Descent -212
586 | /Flags 32
587 | /FontBBox [-665 -325 2046 1040]
588 | /ItalicAngle 0
589 | /StemV 0
590 | /XHeight 519
591 | /FontName /Arial
592 | >>
593 | endobj
594 | 9 0 obj
595 | <<
596 | /Type /Font
597 | /Subtype /TrueType
598 | /Encoding /WinAnsiEncoding
599 | /BaseFont /Arial
600 | /FontDescriptor 8 0 R
601 | /FirstChar 0
602 | /LastChar 255
603 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 277 354 556 556 889 666 190 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 277 277 583 583 583 556 1015 666 666 722 722 666 610 777 722 277 500 666 556 833 722 777 666 777 722 666 610 722 666 943 666 666 610 277 277 277 469 556 333 556 556 500 556 556 277 556 556 222 222 500 222 833 556 556 556 556 333 500 277 556 500 722 500 500 500 333 259 333 583 750 556 750 222 556 333 1000 556 556 333 1000 666 333 1000 750 610 750 750 222 222 333 333 350 556 1000 333 1000 500 333 943 750 500 666 277 333 556 556 556 556 259 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 537 333 333 333 365 556 833 833 833 610 666 666 666 666 666 666 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 500 556 556 556 556 277 277 277 277 556 556 556 556 556 556 556 548 610 556 556 556 556 500 556 500]
604 | >>
605 | endobj
606 | 10 0 obj
607 | <<
608 | /Type /ExtGState
609 | /CA 1
610 | >>
611 | endobj
612 | 11 0 obj
613 | <<
614 | /Type /ExtGState
615 | /CA 0.250980392156863
616 | >>
617 | endobj
618 | 12 0 obj
619 | <<
620 | /Type /FontDescriptor
621 | /Ascent 905
622 | /CapHeight 716
623 | /Descent -212
624 | /Flags 32
625 | /FontBBox [-628 -376 2000 1056]
626 | /ItalicAngle 0
627 | /StemV 0
628 | /XHeight 519
629 | /FontName /Arial,Bold
630 | >>
631 | endobj
632 | 13 0 obj
633 | <<
634 | /Type /Font
635 | /Subtype /TrueType
636 | /Encoding /WinAnsiEncoding
637 | /BaseFont /Arial,Bold
638 | /FontDescriptor 12 0 R
639 | /FirstChar 0
640 | /LastChar 255
641 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 333 474 556 556 889 722 237 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 333 333 583 583 583 610 975 722 722 722 722 666 610 777 722 277 556 722 610 833 722 777 666 777 722 666 610 722 666 943 666 666 610 333 277 333 583 556 333 556 610 556 610 556 333 610 610 277 277 556 277 889 610 610 610 610 389 556 333 610 556 777 556 556 500 389 279 389 583 750 556 750 277 556 500 1000 556 556 333 1000 666 333 1000 750 610 750 750 277 277 500 500 350 556 1000 333 1000 556 333 943 750 500 666 277 333 556 556 556 556 279 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 556 333 333 333 365 556 833 833 833 610 722 722 722 722 722 722 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 556 556 556 556 556 277 277 277 277 610 610 610 610 610 610 610 548 610 610 610 610 610 556 610 556]
642 | >>
643 | endobj
644 | xref
645 | 0 14
646 | 0000000000 65535 f
647 | 0000000009 00000 n
648 | 0000000069 00000 n
649 | 0000000118 00000 n
650 | 0000000175 00000 n
651 | 0000000342 00000 n
652 | 0000006688 00000 n
653 | 0000006792 00000 n
654 | 0000006836 00000 n
655 | 0000007016 00000 n
656 | 0000008202 00000 n
657 | 0000008247 00000 n
658 | 0000008308 00000 n
659 | 0000008494 00000 n
660 | trailer
661 | <<
662 | /Size 14
663 | /Root 2 0 R
664 | /Info 1 0 R
665 | >>
666 | startxref
667 | 9686
668 | %%EOF
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/oxyplot_6.pdf:
--------------------------------------------------------------------------------
1 | %PDF-1.3
2 | 1 0 obj
3 | <<
4 | /CreationDate (D:20190902205427+01'00)
5 | >>
6 | endobj
7 | 2 0 obj
8 | <<
9 | /Type /Catalog
10 | /Pages 3 0 R
11 | >>
12 | endobj
13 | 3 0 obj
14 | <<
15 | /Type /Pages
16 | /Count 1
17 | /Kids [6 0 R]
18 | >>
19 | endobj
20 | 4 0 obj
21 | <<
22 | /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
23 | /Font <<
24 | /F1 9 0 R
25 | /F2 13 0 R
26 | >>
27 | /XObject <<
28 | >>
29 | /ExtGState <<
30 | /GS0 7 0 R
31 | /GS1 10 0 R
32 | /GS2 11 0 R
33 | >>
34 | >>
35 | endobj
36 | 5 0 obj
37 | <<
38 | /Length 7278
39 | >>
40 | stream
41 | q
42 | 0 0 0 rg
43 | /GS0 gs
44 | 1 0 0 1 73.73972 340.1125 cm
45 | 1 0 0 1 -11.25563 0 cm
46 | BT
47 | /F1 11.25 Tf
48 | 0 2.385 Td
49 | (-100) Tj
50 | ET
51 | Q
52 | q
53 | 0 0 0 rg
54 | /GS0 gs
55 | 1 0 0 1 149.08356 340.1125 cm
56 | 1 0 0 1 -8.12813 0 cm
57 | BT
58 | /F1 11.25 Tf
59 | 0 2.385 Td
60 | (-50) Tj
61 | ET
62 | Q
63 | q
64 | 0 0 0 rg
65 | /GS0 gs
66 | 1 0 0 1 224.42739 340.1125 cm
67 | 1 0 0 1 -3.1275 0 cm
68 | BT
69 | /F1 11.25 Tf
70 | 0 2.385 Td
71 | (0) Tj
72 | ET
73 | Q
74 | q
75 | 0 0 0 rg
76 | /GS0 gs
77 | 1 0 0 1 299.77123 340.1125 cm
78 | 1 0 0 1 -6.255 0 cm
79 | BT
80 | /F1 11.25 Tf
81 | 0 2.385 Td
82 | (50) Tj
83 | ET
84 | Q
85 | q
86 | 0 0 0 rg
87 | /GS0 gs
88 | 1 0 0 1 375.11506 340.1125 cm
89 | 1 0 0 1 -9.3825 0 cm
90 | BT
91 | /F1 11.25 Tf
92 | 0 2.385 Td
93 | (100) Tj
94 | ET
95 | Q
96 | q
97 | 0 0 0 rg
98 | /GS0 gs
99 | 1 0 0 1 450.45889 340.1125 cm
100 | 1 0 0 1 -9.3825 0 cm
101 | BT
102 | /F1 11.25 Tf
103 | 0 2.385 Td
104 | (150) Tj
105 | ET
106 | Q
107 | q
108 | 0 0 0 rg
109 | /GS0 gs
110 | 1 0 0 1 525.80273 340.1125 cm
111 | 1 0 0 1 -9.3825 0 cm
112 | BT
113 | /F1 11.25 Tf
114 | 0 2.385 Td
115 | (200) Tj
116 | ET
117 | Q
118 | 0 0 0 RG
119 | /GS1 gs
120 | 0.75 w
121 | 0 j
122 | 8 333.6659 m
123 | 541.4688 333.6659 l
124 | S
125 | 0 0 0 RG
126 | /GS2 gs
127 | 0.75 w
128 | [3 0.75 0.75 0.75 0.75 0.75]0 d
129 | 0 j
130 | 73.7397 333.6659 m
131 | 73.7397 8 l
132 | S
133 | []0 d
134 | 0 0 0 RG
135 | /GS2 gs
136 | 0.75 w
137 | [3 0.75 0.75 0.75 0.75 0.75]0 d
138 | 0 j
139 | 149.0836 333.6659 m
140 | 149.0836 8 l
141 | S
142 | []0 d
143 | 0 0 0 RG
144 | /GS2 gs
145 | 0.75 w
146 | [3 0.75 0.75 0.75 0.75 0.75]0 d
147 | 0 j
148 | 224.4274 333.6659 m
149 | 224.4274 8 l
150 | S
151 | []0 d
152 | 0 0 0 RG
153 | /GS2 gs
154 | 0.75 w
155 | [3 0.75 0.75 0.75 0.75 0.75]0 d
156 | 0 j
157 | 299.7712 333.6659 m
158 | 299.7712 8 l
159 | S
160 | []0 d
161 | 0 0 0 RG
162 | /GS2 gs
163 | 0.75 w
164 | [3 0.75 0.75 0.75 0.75 0.75]0 d
165 | 0 j
166 | 375.1151 333.6659 m
167 | 375.1151 8 l
168 | S
169 | []0 d
170 | 0 0 0 RG
171 | /GS2 gs
172 | 0.75 w
173 | [3 0.75 0.75 0.75 0.75 0.75]0 d
174 | 0 j
175 | 450.4589 333.6659 m
176 | 450.4589 8 l
177 | S
178 | []0 d
179 | 0 0 0 RG
180 | /GS2 gs
181 | 0.75 w
182 | [3 0.75 0.75 0.75 0.75 0.75]0 d
183 | 0 j
184 | 525.8027 333.6659 m
185 | 525.8027 8 l
186 | S
187 | []0 d
188 | 0 0 0 RG
189 | /GS1 gs
190 | 0.75 w
191 | 0 j
192 | 73.7397 333.6659 m
193 | 73.7397 336.1125 l
194 | S
195 | 0 0 0 RG
196 | /GS1 gs
197 | 0.75 w
198 | 0 j
199 | 149.0836 333.6659 m
200 | 149.0836 336.1125 l
201 | S
202 | 0 0 0 RG
203 | /GS1 gs
204 | 0.75 w
205 | 0 j
206 | 224.4274 333.6659 m
207 | 224.4274 336.1125 l
208 | S
209 | 0 0 0 RG
210 | /GS1 gs
211 | 0.75 w
212 | 0 j
213 | 299.7712 333.6659 m
214 | 299.7712 336.1125 l
215 | S
216 | 0 0 0 RG
217 | /GS1 gs
218 | 0.75 w
219 | 0 j
220 | 375.1151 333.6659 m
221 | 375.1151 336.1125 l
222 | S
223 | 0 0 0 RG
224 | /GS1 gs
225 | 0.75 w
226 | 0 j
227 | 450.4589 333.6659 m
228 | 450.4589 336.1125 l
229 | S
230 | 0 0 0 RG
231 | /GS1 gs
232 | 0.75 w
233 | 0 j
234 | 525.8027 333.6659 m
235 | 525.8027 336.1125 l
236 | S
237 | q
238 | 0 0 0 rg
239 | /GS0 gs
240 | 1 0 0 1 274.73439 365.245 cm
241 | 1 0 0 1 -26.991 -10.053 cm
242 | BT
243 | /F1 9 Tf
244 | 0 1.908 Td
245 | (arLg yU NRs) Tj
246 | ET
247 | Q
248 | q
249 | 0 0 0 rg
250 | /GS0 gs
251 | 1 0 0 1 547.30375 10.98697 cm
252 | 1 0 0 1 0 -6.28313 cm
253 | BT
254 | /F1 11.25 Tf
255 | 0 2.385 Td
256 | (-1.5e+08) Tj
257 | ET
258 | Q
259 | q
260 | 0 0 0 rg
261 | /GS0 gs
262 | 1 0 0 1 547.30375 122.96498 cm
263 | 1 0 0 1 0 -6.28313 cm
264 | BT
265 | /F1 11.25 Tf
266 | 0 2.385 Td
267 | (-1e+08) Tj
268 | ET
269 | Q
270 | q
271 | 0 0 0 rg
272 | /GS0 gs
273 | 1 0 0 1 547.30375 234.94299 cm
274 | 1 0 0 1 0 -6.28313 cm
275 | BT
276 | /F1 11.25 Tf
277 | 0 2.385 Td
278 | (-5e+07) Tj
279 | ET
280 | Q
281 | 0 0 0 RG
282 | /GS1 gs
283 | 0.75 w
284 | 0 j
285 | 541.4688 8 m
286 | 541.4688 333.6659 l
287 | S
288 | 0 0 0 RG
289 | /GS2 gs
290 | 0.75 w
291 | [3 0.75 0.75 0.75 0.75 0.75]0 d
292 | 0 j
293 | 8 10.987 m
294 | 541.4688 10.987 l
295 | S
296 | []0 d
297 | 0 0 0 RG
298 | /GS2 gs
299 | 0.75 w
300 | [3 0.75 0.75 0.75 0.75 0.75]0 d
301 | 0 j
302 | 8 122.965 m
303 | 541.4688 122.965 l
304 | S
305 | []0 d
306 | 0 0 0 RG
307 | /GS2 gs
308 | 0.75 w
309 | [3 0.75 0.75 0.75 0.75 0.75]0 d
310 | 0 j
311 | 8 234.943 m
312 | 541.4688 234.943 l
313 | S
314 | []0 d
315 | 0 0 0 RG
316 | /GS1 gs
317 | 0.75 w
318 | 0 j
319 | 539.6338 10.987 m
320 | 543.3038 10.987 l
321 | S
322 | 0 0 0 RG
323 | /GS1 gs
324 | 0.75 w
325 | 0 j
326 | 539.6338 122.965 m
327 | 543.3038 122.965 l
328 | S
329 | 0 0 0 RG
330 | /GS1 gs
331 | 0.75 w
332 | 0 j
333 | 539.6338 234.943 m
334 | 543.3038 234.943 l
335 | S
336 | q
337 | 1 0 0.9451 rg
338 | /GS0 gs
339 | 135.5301 328.9884 m
340 | 135.5301 324.8807 138.8601 321.5507 142.9678 321.5507 c
341 | 147.0755 321.5507 150.4055 324.8807 150.4055 328.9884 c
342 | 150.4055 333.0961 147.0755 336.4261 142.9678 336.4261 c
343 | 138.8601 336.4261 135.5301 333.0961 135.5301 328.9884 c
344 | f
345 | 1 0 0.9451 rg
346 | /GS0 gs
347 | 114.6883 326.7752 m
348 | 114.6883 322.6675 118.0183 319.3376 122.126 319.3376 c
349 | 126.2337 319.3376 129.5636 322.6675 129.5636 326.7752 c
350 | 129.5636 330.883 126.2337 334.2129 122.126 334.2129 c
351 | 118.0183 334.2129 114.6883 330.883 114.6883 326.7752 c
352 | f
353 | 1 0 0.9451 rg
354 | /GS0 gs
355 | 499.1902 116.288 m
356 | 499.1902 112.1803 502.5201 108.8503 506.6278 108.8503 c
357 | 510.7355 108.8503 514.0655 112.1803 514.0655 116.288 c
358 | 514.0655 120.3957 510.7355 123.7257 506.6278 123.7257 c
359 | 502.5201 123.7257 499.1902 120.3957 499.1902 116.288 c
360 | f
361 | 1 0 0.9451 rg
362 | /GS0 gs
363 | 436.985 251.3669 m
364 | 436.985 247.2592 440.3149 243.9292 444.4226 243.9292 c
365 | 448.5303 243.9292 451.8603 247.2592 451.8603 251.3669 c
366 | 451.8603 255.4746 448.5303 258.8046 444.4226 258.8046 c
367 | 440.3149 258.8046 436.985 255.4746 436.985 251.3669 c
368 | f
369 | 1 0 0.9451 rg
370 | /GS0 gs
371 | 304.4505 328.499 m
372 | 304.4505 324.3913 307.7804 321.0613 311.8881 321.0613 c
373 | 315.9958 321.0613 319.3258 324.3913 319.3258 328.499 c
374 | 319.3258 332.6067 315.9958 335.9366 311.8881 335.9366 c
375 | 307.7804 335.9366 304.4505 332.6067 304.4505 328.499 c
376 | f
377 | 1 0 0.9451 rg
378 | /GS0 gs
379 | 445.4394 238.4861 m
380 | 445.4394 234.3784 448.7694 231.0484 452.8771 231.0484 c
381 | 456.9848 231.0484 460.3147 234.3784 460.3147 238.4861 c
382 | 460.3147 242.5938 456.9848 245.9237 452.8771 245.9237 c
383 | 448.7694 245.9237 445.4394 242.5938 445.4394 238.4861 c
384 | f
385 | 1 0 0.9451 rg
386 | /GS0 gs
387 | 5.8442 263.3466 m
388 | 5.8442 259.2389 9.1742 255.909 13.2819 255.909 c
389 | 17.3896 255.909 20.7195 259.2389 20.7195 263.3466 c
390 | 20.7195 267.4543 17.3896 270.7843 13.2819 270.7843 c
391 | 9.1742 270.7843 5.8442 267.4543 5.8442 263.3466 c
392 | f
393 | 1 0 0.9451 rg
394 | /GS0 gs
395 | 388.8005 301.044 m
396 | 388.8005 296.9363 392.1304 293.6063 396.2381 293.6063 c
397 | 400.3458 293.6063 403.6758 296.9363 403.6758 301.044 c
398 | 403.6758 305.1517 400.3458 308.4816 396.2381 308.4816 c
399 | 392.1304 308.4816 388.8005 305.1517 388.8005 301.044 c
400 | f
401 | 1 0 0.9451 rg
402 | /GS0 gs
403 | 218.3969 330.4734 m
404 | 218.3969 326.3657 221.7269 323.0357 225.8346 323.0357 c
405 | 229.9423 323.0357 233.2722 326.3657 233.2722 330.4734 c
406 | 233.2722 334.5811 229.9423 337.9111 225.8346 337.9111 c
407 | 221.7269 337.9111 218.3969 334.5811 218.3969 330.4734 c
408 | f
409 | 1 0 0.9451 rg
410 | /GS0 gs
411 | 341.6825 322.3095 m
412 | 341.6825 318.2018 345.0124 314.8718 349.1201 314.8718 c
413 | 353.2278 314.8718 356.5578 318.2018 356.5578 322.3095 c
414 | 356.5578 326.4172 353.2278 329.7471 349.1201 329.7471 c
415 | 345.0124 329.7471 341.6825 326.4172 341.6825 322.3095 c
416 | f
417 | 1 0 0.9451 rg
418 | /GS0 gs
419 | 283.4256 329.816 m
420 | 283.4256 325.7083 286.7555 322.3783 290.8632 322.3783 c
421 | 294.9709 322.3783 298.3009 325.7083 298.3009 329.816 c
422 | 298.3009 333.9237 294.9709 337.2536 290.8632 337.2536 c
423 | 286.7555 337.2536 283.4256 333.9237 283.4256 329.816 c
424 | f
425 | 1 0 0.9451 rg
426 | /GS0 gs
427 | 61.5876 310.778 m
428 | 61.5876 306.6703 64.9176 303.3404 69.0253 303.3404 c
429 | 73.133 303.3404 76.4629 306.6703 76.4629 310.778 c
430 | 76.4629 314.8857 73.133 318.2157 69.0253 318.2157 c
431 | 64.9176 318.2157 61.5876 314.8857 61.5876 310.778 c
432 | f
433 | 1 0 0.9451 rg
434 | /GS0 gs
435 | 115.8951 326.9441 m
436 | 115.8951 322.8363 119.2251 319.5064 123.3328 319.5064 c
437 | 127.4405 319.5064 130.7705 322.8363 130.7705 326.9441 c
438 | 130.7705 331.0518 127.4405 334.3817 123.3328 334.3817 c
439 | 119.2251 334.3817 115.8951 331.0518 115.8951 326.9441 c
440 | f
441 | 1 0 0.9451 rg
442 | /GS0 gs
443 | 528.8015 11.2244 m
444 | 528.8015 7.1167 532.1315 3.7867 536.2392 3.7867 c
445 | 540.3469 3.7867 543.6769 7.1167 543.6769 11.2244 c
446 | 543.6769 15.3321 540.3469 18.6621 536.2392 18.6621 c
447 | 532.1315 18.6621 528.8015 15.3321 528.8015 11.2244 c
448 | f
449 | Q
450 | q
451 | 0 0 0 rg
452 | /GS0 gs
453 | 1 0 0 1 274.73439 392 cm
454 | 1 0 0 1 -64.545 -16.755 cm
455 | BT
456 | /F2 15 Tf
457 | 0 3.18 Td
458 | (9rl6TQbmG7jO C9) Tj
459 | ET
460 | Q
461 | endstream
462 | endobj
463 | 6 0 obj
464 | <<
465 | /Type /Page
466 | /Parent 3 0 R
467 | /MediaBox [0 0 600 400]
468 | /Contents 5 0 R
469 | /Resources 4 0 R
470 | >>
471 | endobj
472 | 7 0 obj
473 | <<
474 | /Type /ExtGState
475 | /ca 1
476 | >>
477 | endobj
478 | 8 0 obj
479 | <<
480 | /Type /FontDescriptor
481 | /Ascent 905
482 | /CapHeight 716
483 | /Descent -212
484 | /Flags 32
485 | /FontBBox [-665 -325 2046 1040]
486 | /ItalicAngle 0
487 | /StemV 0
488 | /XHeight 519
489 | /FontName /Arial
490 | >>
491 | endobj
492 | 9 0 obj
493 | <<
494 | /Type /Font
495 | /Subtype /TrueType
496 | /Encoding /WinAnsiEncoding
497 | /BaseFont /Arial
498 | /FontDescriptor 8 0 R
499 | /FirstChar 0
500 | /LastChar 255
501 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 277 354 556 556 889 666 190 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 277 277 583 583 583 556 1015 666 666 722 722 666 610 777 722 277 500 666 556 833 722 777 666 777 722 666 610 722 666 943 666 666 610 277 277 277 469 556 333 556 556 500 556 556 277 556 556 222 222 500 222 833 556 556 556 556 333 500 277 556 500 722 500 500 500 333 259 333 583 750 556 750 222 556 333 1000 556 556 333 1000 666 333 1000 750 610 750 750 222 222 333 333 350 556 1000 333 1000 500 333 943 750 500 666 277 333 556 556 556 556 259 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 537 333 333 333 365 556 833 833 833 610 666 666 666 666 666 666 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 500 556 556 556 556 277 277 277 277 556 556 556 556 556 556 556 548 610 556 556 556 556 500 556 500]
502 | >>
503 | endobj
504 | 10 0 obj
505 | <<
506 | /Type /ExtGState
507 | /CA 1
508 | >>
509 | endobj
510 | 11 0 obj
511 | <<
512 | /Type /ExtGState
513 | /CA 0.250980392156863
514 | >>
515 | endobj
516 | 12 0 obj
517 | <<
518 | /Type /FontDescriptor
519 | /Ascent 905
520 | /CapHeight 716
521 | /Descent -212
522 | /Flags 32
523 | /FontBBox [-628 -376 2000 1056]
524 | /ItalicAngle 0
525 | /StemV 0
526 | /XHeight 519
527 | /FontName /Arial,Bold
528 | >>
529 | endobj
530 | 13 0 obj
531 | <<
532 | /Type /Font
533 | /Subtype /TrueType
534 | /Encoding /WinAnsiEncoding
535 | /BaseFont /Arial,Bold
536 | /FontDescriptor 12 0 R
537 | /FirstChar 0
538 | /LastChar 255
539 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 333 474 556 556 889 722 237 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 333 333 583 583 583 610 975 722 722 722 722 666 610 777 722 277 556 722 610 833 722 777 666 777 722 666 610 722 666 943 666 666 610 333 277 333 583 556 333 556 610 556 610 556 333 610 610 277 277 556 277 889 610 610 610 610 389 556 333 610 556 777 556 556 500 389 279 389 583 750 556 750 277 556 500 1000 556 556 333 1000 666 333 1000 750 610 750 750 277 277 500 500 350 556 1000 333 1000 556 333 943 750 500 666 277 333 556 556 556 556 279 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 556 333 333 333 365 556 833 833 833 610 722 722 722 722 722 722 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 556 556 556 556 556 277 277 277 277 610 610 610 610 610 610 610 548 610 610 610 610 610 556 610 556]
540 | >>
541 | endobj
542 | xref
543 | 0 14
544 | 0000000000 65535 f
545 | 0000000009 00000 n
546 | 0000000069 00000 n
547 | 0000000118 00000 n
548 | 0000000175 00000 n
549 | 0000000342 00000 n
550 | 0000007672 00000 n
551 | 0000007776 00000 n
552 | 0000007820 00000 n
553 | 0000008000 00000 n
554 | 0000009186 00000 n
555 | 0000009231 00000 n
556 | 0000009292 00000 n
557 | 0000009478 00000 n
558 | trailer
559 | <<
560 | /Size 14
561 | /Root 2 0 R
562 | /Info 1 0 R
563 | >>
564 | startxref
565 | 10670
566 | %%EOF
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/oxyplot_7.pdf:
--------------------------------------------------------------------------------
1 | %PDF-1.3
2 | 1 0 obj
3 | <<
4 | /CreationDate (D:20190902205401+01'00)
5 | >>
6 | endobj
7 | 2 0 obj
8 | <<
9 | /Type /Catalog
10 | /Pages 3 0 R
11 | >>
12 | endobj
13 | 3 0 obj
14 | <<
15 | /Type /Pages
16 | /Count 1
17 | /Kids [6 0 R]
18 | >>
19 | endobj
20 | 4 0 obj
21 | <<
22 | /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
23 | /Font <<
24 | /F1 9 0 R
25 | /F2 13 0 R
26 | >>
27 | /XObject <<
28 | >>
29 | /ExtGState <<
30 | /GS0 7 0 R
31 | /GS1 10 0 R
32 | /GS2 11 0 R
33 | >>
34 | >>
35 | endobj
36 | 5 0 obj
37 | <<
38 | /Length 6298
39 | >>
40 | stream
41 | q
42 | 0 0 0 rg
43 | /GS0 gs
44 | 1 0 0 1 157.85064 360.02975 cm
45 | 1 0 0 1 -7.749 0 cm
46 | BT
47 | /F1 9 Tf
48 | 0 1.908 Td
49 | (-0.4) Tj
50 | ET
51 | Q
52 | q
53 | 0 0 0 rg
54 | /GS0 gs
55 | 1 0 0 1 265.98052 360.02975 cm
56 | 1 0 0 1 -7.749 0 cm
57 | BT
58 | /F1 9 Tf
59 | 0 1.908 Td
60 | (-0.2) Tj
61 | ET
62 | Q
63 | q
64 | 0 0 0 rg
65 | /GS0 gs
66 | 1 0 0 1 374.11039 360.02975 cm
67 | 1 0 0 1 -2.502 0 cm
68 | BT
69 | /F1 9 Tf
70 | 0 1.908 Td
71 | (0) Tj
72 | ET
73 | Q
74 | q
75 | 0 0 0 rg
76 | /GS0 gs
77 | 1 0 0 1 482.24027 360.02975 cm
78 | 1 0 0 1 -6.2505 0 cm
79 | BT
80 | /F1 9 Tf
81 | 0 1.908 Td
82 | (0.2) Tj
83 | ET
84 | Q
85 | q
86 | 0 0 0 rg
87 | /GS0 gs
88 | 1 0 0 1 590.37015 360.02975 cm
89 | 1 0 0 1 -6.2505 0 cm
90 | BT
91 | /F1 9 Tf
92 | 0 1.908 Td
93 | (0.4) Tj
94 | ET
95 | Q
96 | 0 0 0 RG
97 | /GS1 gs
98 | 0.75 w
99 | 0 j
100 | 54.07 354.4553 m
101 | 592 354.4553 l
102 | S
103 | 0 0 0 RG
104 | /GS2 gs
105 | 0.75 w
106 | [0.75 0.75]0 d
107 | 0 j
108 | 157.8506 354.4553 m
109 | 157.8506 8 l
110 | S
111 | []0 d
112 | 0 0 0 RG
113 | /GS2 gs
114 | 0.75 w
115 | [0.75 0.75]0 d
116 | 0 j
117 | 265.9805 354.4553 m
118 | 265.9805 8 l
119 | S
120 | []0 d
121 | 0 0 0 RG
122 | /GS2 gs
123 | 0.75 w
124 | [0.75 0.75]0 d
125 | 0 j
126 | 374.1104 354.4553 m
127 | 374.1104 8 l
128 | S
129 | []0 d
130 | 0 0 0 RG
131 | /GS2 gs
132 | 0.75 w
133 | [0.75 0.75]0 d
134 | 0 j
135 | 482.2403 354.4553 m
136 | 482.2403 8 l
137 | S
138 | []0 d
139 | 0 0 0 RG
140 | /GS2 gs
141 | 0.75 w
142 | [0.75 0.75]0 d
143 | 0 j
144 | 590.3701 354.4553 m
145 | 590.3701 8 l
146 | S
147 | []0 d
148 | 0 0 0 RG
149 | /GS1 gs
150 | 0.75 w
151 | 0 j
152 | 157.8506 354.4553 m
153 | 157.8506 356.0298 l
154 | S
155 | 0 0 0 RG
156 | /GS1 gs
157 | 0.75 w
158 | 0 j
159 | 265.9805 354.4553 m
160 | 265.9805 356.0298 l
161 | S
162 | 0 0 0 RG
163 | /GS1 gs
164 | 0.75 w
165 | 0 j
166 | 374.1104 354.4553 m
167 | 374.1104 356.0298 l
168 | S
169 | 0 0 0 RG
170 | /GS1 gs
171 | 0.75 w
172 | 0 j
173 | 482.2403 354.4553 m
174 | 482.2403 356.0298 l
175 | S
176 | 0 0 0 RG
177 | /GS1 gs
178 | 0.75 w
179 | 0 j
180 | 590.3701 354.4553 m
181 | 590.3701 356.0298 l
182 | S
183 | q
184 | 0 0 0 rg
185 | /GS0 gs
186 | 1 0 0 1 50.07 71.70243 cm
187 | 1 0 0 1 -28.017 -5.0265 cm
188 | BT
189 | /F1 9 Tf
190 | 0 1.908 Td
191 | (-15120) Tj
192 | ET
193 | Q
194 | q
195 | 0 0 0 rg
196 | /GS0 gs
197 | 1 0 0 1 50.07 143.51322 cm
198 | 1 0 0 1 -28.017 -5.0265 cm
199 | BT
200 | /F1 9 Tf
201 | 0 1.908 Td
202 | (-15100) Tj
203 | ET
204 | Q
205 | q
206 | 0 0 0 rg
207 | /GS0 gs
208 | 1 0 0 1 50.07 215.32401 cm
209 | 1 0 0 1 -28.017 -5.0265 cm
210 | BT
211 | /F1 9 Tf
212 | 0 1.908 Td
213 | (-15080) Tj
214 | ET
215 | Q
216 | q
217 | 0 0 0 rg
218 | /GS0 gs
219 | 1 0 0 1 50.07 287.13479 cm
220 | 1 0 0 1 -28.017 -5.0265 cm
221 | BT
222 | /F1 9 Tf
223 | 0 1.908 Td
224 | (-15060) Tj
225 | ET
226 | Q
227 | 0 0 0 RG
228 | /GS1 gs
229 | 0.75 w
230 | 0 j
231 | 54.07 8 m
232 | 54.07 354.4553 l
233 | S
234 | 0 0 0 RG
235 | /GS2 gs
236 | 0.75 w
237 | [0.75 0.75]0 d
238 | 0 j
239 | 54.07 71.7024 m
240 | 592 71.7024 l
241 | S
242 | []0 d
243 | 0 0 0 RG
244 | /GS2 gs
245 | 0.75 w
246 | [0.75 0.75]0 d
247 | 0 j
248 | 54.07 143.5132 m
249 | 592 143.5132 l
250 | S
251 | []0 d
252 | 0 0 0 RG
253 | /GS2 gs
254 | 0.75 w
255 | [0.75 0.75]0 d
256 | 0 j
257 | 54.07 215.324 m
258 | 592 215.324 l
259 | S
260 | []0 d
261 | 0 0 0 RG
262 | /GS2 gs
263 | 0.75 w
264 | [0.75 0.75]0 d
265 | 0 j
266 | 54.07 287.1348 m
267 | 592 287.1348 l
268 | S
269 | []0 d
270 | 0 0 0 RG
271 | /GS1 gs
272 | 0.75 w
273 | 0 j
274 | 55.6445 71.7024 m
275 | 54.07 71.7024 l
276 | S
277 | 0 0 0 RG
278 | /GS1 gs
279 | 0.75 w
280 | 0 j
281 | 55.6445 143.5132 m
282 | 54.07 143.5132 l
283 | S
284 | 0 0 0 RG
285 | /GS1 gs
286 | 0.75 w
287 | 0 j
288 | 55.6445 215.324 m
289 | 54.07 215.324 l
290 | S
291 | 0 0 0 RG
292 | /GS1 gs
293 | 0.75 w
294 | 0 j
295 | 55.6445 287.1348 m
296 | 54.07 287.1348 l
297 | S
298 | q
299 | 0 0 0 rg
300 | /GS0 gs
301 | 1 0 0 1 12 181.22763 cm
302 | 0 1 -1 0 0 0 cm
303 | 1 0 0 1 -22.80375 -12.56625 cm
304 | BT
305 | /F1 11.25 Tf
306 | 0 2.385 Td
307 | (cs SR hL) Tj
308 | ET
309 | Q
310 | q
311 | 0.9216 0.4196 0 RG
312 | /GS1 gs
313 | 1.5 w
314 | 0 j
315 | 49.6875 21.1388 m
316 | 69.1046 1.7217 l
317 | S
318 | 0.9216 0.4196 0 RG
319 | /GS1 gs
320 | 1.5 w
321 | 0 j
322 | 49.6875 1.7217 m
323 | 69.1046 21.1388 l
324 | S
325 | 0.9216 0.4196 0 RG
326 | /GS1 gs
327 | 1.5 w
328 | 0 j
329 | 126.7904 225.4262 m
330 | 146.2075 206.009 l
331 | S
332 | 0.9216 0.4196 0 RG
333 | /GS1 gs
334 | 1.5 w
335 | 0 j
336 | 126.7904 206.009 m
337 | 146.2075 225.4262 l
338 | S
339 | 0.9216 0.4196 0 RG
340 | /GS1 gs
341 | 1.5 w
342 | 0 j
343 | 318.3074 298.6691 m
344 | 340.157 276.8196 l
345 | S
346 | 0.9216 0.4196 0 RG
347 | /GS1 gs
348 | 1.5 w
349 | 0 j
350 | 318.3074 276.8196 m
351 | 340.157 298.6691 l
352 | S
353 | 0.9216 0.4196 0 RG
354 | /GS1 gs
355 | 1.5 w
356 | 0 j
357 | 496.3775 324.0021 m
358 | 515.7946 304.585 l
359 | S
360 | 0.9216 0.4196 0 RG
361 | /GS1 gs
362 | 1.5 w
363 | 0 j
364 | 496.3775 304.585 m
365 | 515.7946 324.0021 l
366 | S
367 | 0.9216 0.4196 0 RG
368 | /GS1 gs
369 | 1.5 w
370 | 0 j
371 | 364.5522 272.1004 m
372 | 383.9693 252.6833 l
373 | S
374 | 0.9216 0.4196 0 RG
375 | /GS1 gs
376 | 1.5 w
377 | 0 j
378 | 364.5522 252.6833 m
379 | 383.9693 272.1004 l
380 | S
381 | 0.9216 0.4196 0 RG
382 | /GS1 gs
383 | 1.5 w
384 | 0 j
385 | 501.2626 249.4667 m
386 | 520.6797 230.0495 l
387 | S
388 | 0.9216 0.4196 0 RG
389 | /GS1 gs
390 | 1.5 w
391 | 0 j
392 | 501.2626 230.0495 m
393 | 520.6797 249.4667 l
394 | S
395 | 0.9216 0.4196 0 RG
396 | /GS1 gs
397 | 1.5 w
398 | 0 j
399 | 536.0514 204.6318 m
400 | 555.4685 185.2147 l
401 | S
402 | 0.9216 0.4196 0 RG
403 | /GS1 gs
404 | 1.5 w
405 | 0 j
406 | 536.0514 185.2147 m
407 | 555.4685 204.6318 l
408 | S
409 | 0.9216 0.4196 0 RG
410 | /GS1 gs
411 | 1.5 w
412 | 0 j
413 | 265.4482 357.0537 m
414 | 277.4376 345.0642 l
415 | S
416 | 0.9216 0.4196 0 RG
417 | /GS1 gs
418 | 1.5 w
419 | 0 j
420 | 265.4482 345.0642 m
421 | 277.4376 357.0537 l
422 | S
423 | 0.9216 0.4196 0 RG
424 | /GS1 gs
425 | 1.5 w
426 | 0 j
427 | 580.732 221.0734 m
428 | 592.7214 209.084 l
429 | S
430 | 0.9216 0.4196 0 RG
431 | /GS1 gs
432 | 1.5 w
433 | 0 j
434 | 580.732 209.084 m
435 | 592.7214 221.0734 l
436 | S
437 | 0.9216 0.4196 0 RG
438 | /GS1 gs
439 | 1.5 w
440 | 0 j
441 | 382.2309 335.1481 m
442 | 401.6481 315.7309 l
443 | S
444 | 0.9216 0.4196 0 RG
445 | /GS1 gs
446 | 1.5 w
447 | 0 j
448 | 382.2309 315.7309 m
449 | 401.6481 335.1481 l
450 | S
451 | 0.4078 0 0 RG
452 | /GS1 gs
453 | 1.5 w
454 | 0 j
455 | 195.146 297.2482 m
456 | 207.1355 285.2588 l
457 | S
458 | 0.4078 0 0 RG
459 | /GS1 gs
460 | 1.5 w
461 | 0 j
462 | 195.146 285.2588 m
463 | 207.1355 297.2482 l
464 | S
465 | 0.4078 0 0 RG
466 | /GS1 gs
467 | 1.5 w
468 | 0 j
469 | 378.2205 329.3495 m
470 | 390.2099 317.3601 l
471 | S
472 | 0.4078 0 0 RG
473 | /GS1 gs
474 | 1.5 w
475 | 0 j
476 | 378.2205 317.3601 m
477 | 390.2099 329.3495 l
478 | S
479 | 0.4078 0 0 RG
480 | /GS1 gs
481 | 1.5 w
482 | 0 j
483 | 288.8048 243.7781 m
484 | 300.7943 231.7887 l
485 | S
486 | 0.4078 0 0 RG
487 | /GS1 gs
488 | 1.5 w
489 | 0 j
490 | 288.8048 231.7887 m
491 | 300.7943 243.7781 l
492 | S
493 | 0.4078 0 0 RG
494 | /GS1 gs
495 | 1.5 w
496 | 0 j
497 | 63.9359 33.401 m
498 | 83.3531 13.9839 l
499 | S
500 | 0.4078 0 0 RG
501 | /GS1 gs
502 | 1.5 w
503 | 0 j
504 | 63.9359 13.9839 m
505 | 83.3531 33.401 l
506 | S
507 | 0.4078 0 0 RG
508 | /GS1 gs
509 | 1.5 w
510 | 0 j
511 | 437.0071 299.3245 m
512 | 456.4242 279.9074 l
513 | S
514 | 0.4078 0 0 RG
515 | /GS1 gs
516 | 1.5 w
517 | 0 j
518 | 437.0071 279.9074 m
519 | 456.4242 299.3245 l
520 | S
521 | 0.4078 0 0 RG
522 | /GS1 gs
523 | 1.5 w
524 | 0 j
525 | 501.7463 323.639 m
526 | 513.7358 311.6496 l
527 | S
528 | 0.4078 0 0 RG
529 | /GS1 gs
530 | 1.5 w
531 | 0 j
532 | 501.7463 311.6496 m
533 | 513.7358 323.639 l
534 | S
535 | 0.4078 0 0 RG
536 | /GS1 gs
537 | 1.5 w
538 | 0 j
539 | 339.7365 303.027 m
540 | 361.586 281.1774 l
541 | S
542 | 0.4078 0 0 RG
543 | /GS1 gs
544 | 1.5 w
545 | 0 j
546 | 339.7365 281.1774 m
547 | 361.586 303.027 l
548 | S
549 | 0.4078 0 0 RG
550 | /GS1 gs
551 | 1.5 w
552 | 0 j
553 | 547.1369 214.8501 m
554 | 559.1264 202.8606 l
555 | S
556 | 0.4078 0 0 RG
557 | /GS1 gs
558 | 1.5 w
559 | 0 j
560 | 547.1369 202.8606 m
561 | 559.1264 214.8501 l
562 | S
563 | 0.4078 0 0 RG
564 | /GS1 gs
565 | 1.5 w
566 | 0 j
567 | 66.0304 91.6553 m
568 | 85.4475 72.2381 l
569 | S
570 | 0.4078 0 0 RG
571 | /GS1 gs
572 | 1.5 w
573 | 0 j
574 | 66.0304 72.2381 m
575 | 85.4475 91.6553 l
576 | S
577 | 0.4078 0 0 RG
578 | /GS1 gs
579 | 1.5 w
580 | 0 j
581 | 470.3448 248.2069 m
582 | 482.3343 236.2174 l
583 | S
584 | 0.4078 0 0 RG
585 | /GS1 gs
586 | 1.5 w
587 | 0 j
588 | 470.3448 236.2174 m
589 | 482.3343 248.2069 l
590 | S
591 | Q
592 | q
593 | 0 0 0 rg
594 | /GS0 gs
595 | 1 0 0 1 323.035 392 cm
596 | 1 0 0 1 -38.76 -15.91725 cm
597 | BT
598 | /F2 14.25 Tf
599 | 0 3.021 Td
600 | (1,1SiNt1 qo) Tj
601 | ET
602 | Q
603 | endstream
604 | endobj
605 | 6 0 obj
606 | <<
607 | /Type /Page
608 | /Parent 3 0 R
609 | /MediaBox [0 0 600 400]
610 | /Contents 5 0 R
611 | /Resources 4 0 R
612 | >>
613 | endobj
614 | 7 0 obj
615 | <<
616 | /Type /ExtGState
617 | /ca 1
618 | >>
619 | endobj
620 | 8 0 obj
621 | <<
622 | /Type /FontDescriptor
623 | /Ascent 905
624 | /CapHeight 716
625 | /Descent -212
626 | /Flags 32
627 | /FontBBox [-665 -325 2046 1040]
628 | /ItalicAngle 0
629 | /StemV 0
630 | /XHeight 519
631 | /FontName /Arial
632 | >>
633 | endobj
634 | 9 0 obj
635 | <<
636 | /Type /Font
637 | /Subtype /TrueType
638 | /Encoding /WinAnsiEncoding
639 | /BaseFont /Arial
640 | /FontDescriptor 8 0 R
641 | /FirstChar 0
642 | /LastChar 255
643 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 277 354 556 556 889 666 190 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 277 277 583 583 583 556 1015 666 666 722 722 666 610 777 722 277 500 666 556 833 722 777 666 777 722 666 610 722 666 943 666 666 610 277 277 277 469 556 333 556 556 500 556 556 277 556 556 222 222 500 222 833 556 556 556 556 333 500 277 556 500 722 500 500 500 333 259 333 583 750 556 750 222 556 333 1000 556 556 333 1000 666 333 1000 750 610 750 750 222 222 333 333 350 556 1000 333 1000 500 333 943 750 500 666 277 333 556 556 556 556 259 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 537 333 333 333 365 556 833 833 833 610 666 666 666 666 666 666 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 500 556 556 556 556 277 277 277 277 556 556 556 556 556 556 556 548 610 556 556 556 556 500 556 500]
644 | >>
645 | endobj
646 | 10 0 obj
647 | <<
648 | /Type /ExtGState
649 | /CA 1
650 | >>
651 | endobj
652 | 11 0 obj
653 | <<
654 | /Type /ExtGState
655 | /CA 0.250980392156863
656 | >>
657 | endobj
658 | 12 0 obj
659 | <<
660 | /Type /FontDescriptor
661 | /Ascent 905
662 | /CapHeight 716
663 | /Descent -212
664 | /Flags 32
665 | /FontBBox [-628 -376 2000 1056]
666 | /ItalicAngle 0
667 | /StemV 0
668 | /XHeight 519
669 | /FontName /Arial,Bold
670 | >>
671 | endobj
672 | 13 0 obj
673 | <<
674 | /Type /Font
675 | /Subtype /TrueType
676 | /Encoding /WinAnsiEncoding
677 | /BaseFont /Arial,Bold
678 | /FontDescriptor 12 0 R
679 | /FirstChar 0
680 | /LastChar 255
681 | /Widths [750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 277 333 474 556 556 889 722 237 333 333 389 583 277 333 277 277 556 556 556 556 556 556 556 556 556 556 333 333 583 583 583 610 975 722 722 722 722 666 610 777 722 277 556 722 610 833 722 777 666 777 722 666 610 722 666 943 666 666 610 333 277 333 583 556 333 556 610 556 610 556 333 610 610 277 277 556 277 889 610 610 610 610 389 556 333 610 556 777 556 556 500 389 279 389 583 750 556 750 277 556 500 1000 556 556 333 1000 666 333 1000 750 610 750 750 277 277 500 500 350 556 1000 333 1000 556 333 943 750 500 666 277 333 556 556 556 556 279 556 333 736 370 556 583 333 736 552 399 548 333 333 333 576 556 333 333 333 365 556 833 833 833 610 722 722 722 722 722 722 1000 722 666 666 666 666 277 277 277 277 722 722 777 777 777 777 777 583 777 722 722 722 722 666 666 610 556 556 556 556 556 556 889 556 556 556 556 556 277 277 277 277 610 610 610 610 610 610 610 548 610 610 610 610 610 556 610 556]
682 | >>
683 | endobj
684 | xref
685 | 0 14
686 | 0000000000 65535 f
687 | 0000000009 00000 n
688 | 0000000069 00000 n
689 | 0000000118 00000 n
690 | 0000000175 00000 n
691 | 0000000342 00000 n
692 | 0000006692 00000 n
693 | 0000006796 00000 n
694 | 0000006840 00000 n
695 | 0000007020 00000 n
696 | 0000008206 00000 n
697 | 0000008251 00000 n
698 | 0000008312 00000 n
699 | 0000008498 00000 n
700 | trailer
701 | <<
702 | /Size 14
703 | /Root 2 0 R
704 | /Info 1 0 R
705 | >>
706 | startxref
707 | 9690
708 | %%EOF
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/rotated block2.1_bw_raw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/rotated block2.1_bw_raw.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/rotated block2.1_raw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/rotated block2.1_raw.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/rotated block2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/Resources/Samples/rotated block2.pdf
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/docstrum example 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/docstrum example 1.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/docstrum example 2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/docstrum example 2.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/nearest neighbour word example v2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/nearest neighbour word example v2.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/rxyc example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/rxyc example.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/viewer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/viewer.png
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/xy cut.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/xy cut.gif
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/xy cut_small.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/DocumentLayoutAnalysis/doc/xy cut_small.gif
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/DocumentLayoutAnalysis/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/ImageConverter/ImageConverter.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {78212F45-D69E-4A84-8A26-A4BB5609B660}
8 | Library
9 | Properties
10 | ImageConverter
11 | ImageConverter
12 | v4.6.1
13 | 512
14 | true
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 | true
25 |
26 |
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 | true
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Always
55 |
56 |
57 | Always
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/ImageConverter/PdfImageConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.Drawing.Imaging;
5 | using System.IO;
6 | using System.Runtime.InteropServices;
7 | using CC = System.Runtime.InteropServices.CallingConvention;
8 |
9 | /*************************************************************************************************
10 | * https://www.codeproject.com/articles/498317/rendering-pdf-documents-with-mupdf-and-p-invoke-in
11 | * https://github.com/wmjordan/mupdf/blob/master/MupdfSharp/Program.cs
12 | * https://github.com/reliak/moonpdf/blob/master/src/MoonPdfLib/MuPdf/MuPdfWrapper.cs
13 | * lib: https://github.com/sumatrapdfreader/sumatrapdf/tree/master/mupdf/include/mupdf/fitz
14 | *************************************************************************************************/
15 |
16 | namespace ImageConverter
17 | {
18 | public class PdfImageConverter : IDisposable
19 | {
20 | private readonly string _path;
21 | private readonly IntPtr _ctx;
22 | private readonly IntPtr _stm;
23 | private readonly IntPtr _doc;
24 |
25 | ///
26 | /// The number of pages in the document.
27 | ///
28 | public int PagesCount { get; }
29 |
30 | public PdfImageConverter(string path)
31 | {
32 | if (!File.Exists(path))
33 | {
34 | throw new FileNotFoundException("PdfImageConverter(): " + path);
35 | }
36 |
37 | _path = path;
38 | _ctx = NativeMethods.NewContext(); // Creates the context
39 | _stm = NativeMethods.OpenFile(_ctx, _path); // opens file test.pdf as a stream
40 | _doc = NativeMethods.OpenDocumentStream(_ctx, _stm); // opens the document
41 | PagesCount = NativeMethods.CountPages(_doc); // gets the number of pages in the document
42 | }
43 |
44 | public void Dispose()
45 | {
46 | NativeMethods.CloseDocument(_doc); // releases the resources
47 | NativeMethods.CloseStream(_stm);
48 | NativeMethods.FreeContext(_ctx);
49 | }
50 |
51 | ///
52 | /// Get the page with the specified page number (1 indexed).
53 | ///
54 | /// The number of the page to return, this starts from 1.
55 | ///
56 | public Bitmap GetPage(int pageNumber, float zoom = 1.0f)
57 | {
58 | if (pageNumber <= 0 || pageNumber > PagesCount)
59 | {
60 | throw new ArgumentOutOfRangeException("pageNumber");
61 | }
62 |
63 | if (zoom <= 0)
64 | {
65 | throw new ArgumentException("PdfImageConverter(): zoom must be positive and bigger than 0.");
66 | }
67 |
68 | IntPtr p = NativeMethods.LoadPage(_doc, pageNumber - 1); // loads the page (first page number is 0)
69 | RectangleMu b = new RectangleMu();
70 | NativeMethods.BoundPage(_doc, p, ref b); // gets the page size
71 | var page = RenderPage(_ctx, _doc, p, b, zoom, zoom);
72 | NativeMethods.FreePage(_doc, p); // releases the resources consumed by the page
73 | return page;
74 | }
75 |
76 | public Stream GetPageStream(int pageNumber, float zoom = 1.0f)
77 | {
78 | var bmp = GetPage(pageNumber, zoom);
79 | MemoryStream memStream = new MemoryStream();
80 | bmp.Save(memStream, ImageFormat.Png);
81 | memStream.Seek(0, SeekOrigin.Begin);
82 | return memStream;
83 | }
84 |
85 | private enum ColorSpace
86 | {
87 | Rgb,
88 | Bgr,
89 | Cmyk,
90 | Gray
91 | }
92 |
93 | public static int GetBitmapHeight(RectangleMu pageBound, float zoomY = 1.0f)
94 | {
95 | return (int)(zoomY * (pageBound.Bottom - pageBound.Top));
96 | }
97 |
98 | public static int GetBitmapWidth(RectangleMu pageBound, float zoomX = 1.0f)
99 | {
100 | return (int)(zoomX * (pageBound.Right - pageBound.Left));
101 | }
102 |
103 | #region 32/64bit
104 | public static IEnumerable GetBitmapPagesEnum(string path, float zoom = 1.0f)
105 | {
106 | IntPtr ctx = NativeMethods.NewContext(); // Creates the context
107 | IntPtr stm = NativeMethods.OpenFile(ctx, path); // opens file test.pdf as a stream
108 | IntPtr doc = NativeMethods.OpenDocumentStream(ctx, stm); // opens the document
109 | int pn = NativeMethods.CountPages(doc); // gets the number of pages in the document
110 |
111 | for (int i = 0; i < pn; i++) // iterate through each pages
112 | {
113 | IntPtr p = NativeMethods.LoadPage(doc, i); // loads the page (first page number is 0)
114 | RectangleMu b = new RectangleMu();
115 | NativeMethods.BoundPage(doc, p, ref b); // gets the page size
116 | var page = RenderPage(ctx, doc, p, b, zoom, zoom);
117 | NativeMethods.FreePage(doc, p); // releases the resources consumed by the page
118 | yield return page;
119 | }
120 | NativeMethods.CloseDocument(doc); // releases the resources
121 | NativeMethods.CloseStream(stm);
122 | NativeMethods.FreeContext(ctx);
123 | }
124 |
125 | public static Bitmap[] GetBitmapPages(string path, float zoom = 1.0f)
126 | {
127 | IntPtr ctx = NativeMethods.NewContext(); // Creates the context
128 | IntPtr stm = NativeMethods.OpenFile(ctx, path); // opens file test.pdf as a stream
129 | IntPtr doc = NativeMethods.OpenDocumentStream(ctx, stm); // opens the document
130 | int pn = NativeMethods.CountPages(doc); // gets the number of pages in the document
131 | Bitmap[] images = new Bitmap[pn];
132 |
133 | for (int i = 0; i < pn; i++) // iterate through each pages
134 | {
135 | IntPtr p = NativeMethods.LoadPage(doc, i); // loads the page (first page number is 0)
136 | RectangleMu b = new RectangleMu();
137 | NativeMethods.BoundPage(doc, p, ref b); // gets the page size
138 | images[i] = RenderPage(ctx, doc, p, b, zoom, zoom);
139 |
140 | NativeMethods.FreePage(doc, p); // releases the resources consumed by the page
141 | }
142 | NativeMethods.CloseDocument(doc); // releases the resources
143 | NativeMethods.CloseStream(stm);
144 | NativeMethods.FreeContext(ctx);
145 | return images;
146 | }
147 |
148 | private static Bitmap RenderPage(IntPtr context, IntPtr document, IntPtr page, RectangleMu pageBound, float zoomX = 1.0f, float zoomY = 1.0f)
149 | {
150 | MatrixMu ctm = new MatrixMu();
151 | IntPtr pix = IntPtr.Zero;
152 | IntPtr dev = IntPtr.Zero;
153 |
154 | // gets the size of the scaled page
155 | int width = GetBitmapWidth(pageBound, zoomX); // (int)(zoomX * (pageBound.Right - pageBound.Left));
156 | int height = GetBitmapHeight(pageBound, zoomY); // (int)(zoomY * (pageBound.Bottom - pageBound.Top));
157 |
158 | ctm.A = zoomX;
159 | ctm.D = zoomY; // sets the matrix as (zoomX,0,0,zoomY,0,0)
160 |
161 | // creates a pixmap the same size as the width and height of the page
162 | pix = NativeMethods.NewPixmap(context, NativeMethods.LookupDeviceColorSpace(context, "DeviceRGB"), width, height);
163 | // sets white color as the background color of the pixmap
164 | NativeMethods.ClearPixmap(context, pix, 0xFF);
165 |
166 | // creates a drawing device
167 | dev = NativeMethods.NewDrawDevice(context, pix);
168 | // draws the page on the device created from the pixmap
169 | NativeMethods.RunPage(document, page, dev, ref ctm, IntPtr.Zero);
170 |
171 | NativeMethods.FreeDevice(dev); // frees the resources consumed by the device
172 | dev = IntPtr.Zero;
173 |
174 | // creates a colorful bitmap of the same size of the pixmap
175 | Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
176 | //bmp.SetResolution(300, 300);
177 | var imageData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, bmp.PixelFormat);
178 | unsafe
179 | { // converts the pixmap data to Bitmap data
180 | // gets the rendered data from the pixmap
181 | byte* ptrSrc = (byte*)NativeMethods.GetSamples(context, pix);
182 | byte* ptrDest = (byte*)imageData.Scan0;
183 | for (int y = 0; y < height; y++)
184 | {
185 | byte* pl = ptrDest;
186 | byte* sl = ptrSrc;
187 | for (int x = 0; x < width; x++)
188 | {
189 | //Swap these here instead of in MuPDF because most pdf images will be rgb or cmyk.
190 | //Since we are going through the pixels one by one
191 | //anyway swap here to save a conversion from rgb to bgr.
192 | pl[2] = sl[0]; //b-r
193 | pl[1] = sl[1]; //g-g
194 | pl[0] = sl[2]; //r-b
195 | //sl[3] is the alpha channel, we will skip it here
196 | pl += 3;
197 | sl += 4;
198 | }
199 | ptrDest += imageData.Stride;
200 | ptrSrc += width * 4;
201 | }
202 | }
203 | // free bitmap in memory
204 | bmp.UnlockBits(imageData);
205 | NativeMethods.DropPixmap(context, pix);
206 | return bmp;
207 | }
208 |
209 | private static class NativeMethods
210 | {
211 | public static bool Is64bit => IntPtr.Size == 8;
212 | private const uint FZ_STORE_DEFAULT = 256 << 20;
213 | private const string DLL = "libmupdf.dll";
214 | private const string MuPDFVersion = "1.6";
215 |
216 | static NativeMethods()
217 | {
218 | var subfolder = Is64bit ? "x64" : "x86";
219 | LoadLibrary(subfolder + @"\" + DLL);
220 | }
221 |
222 | [DllImport("kernel32.dll")]
223 | private static extern IntPtr LoadLibrary(string dllToLoad);
224 |
225 | [DllImport(DLL, EntryPoint = "fz_new_context_imp", CallingConvention = CC.Cdecl, BestFitMapping = false)]
226 | private static extern IntPtr NewContext(IntPtr alloc, IntPtr locks, uint max_store, [MarshalAs(UnmanagedType.LPStr)] string fz_version);
227 |
228 | public static IntPtr NewContext()
229 | {
230 | return NewContext(IntPtr.Zero, IntPtr.Zero, FZ_STORE_DEFAULT, MuPDFVersion);
231 | }
232 |
233 | [DllImport(DLL, EntryPoint = "fz_free_context", CallingConvention = CC.Cdecl)]
234 | public static extern IntPtr FreeContext(IntPtr ctx);
235 |
236 | [DllImport(DLL, EntryPoint = "fz_open_file_w", CharSet = CharSet.Unicode, CallingConvention = CC.Cdecl)]
237 | public static extern IntPtr OpenFile(IntPtr ctx, string fileName);
238 |
239 | [DllImport(DLL, EntryPoint = "pdf_open_document_with_stream", CallingConvention = CC.Cdecl)]
240 | public static extern IntPtr OpenDocumentStream(IntPtr ctx, IntPtr stm);
241 |
242 | [DllImport(DLL, EntryPoint = "fz_close", CallingConvention = CC.Cdecl)]
243 | public static extern IntPtr CloseStream(IntPtr stm);
244 |
245 | [DllImport(DLL, EntryPoint = "pdf_close_document", CallingConvention = CC.Cdecl)]
246 | public static extern IntPtr CloseDocument(IntPtr doc);
247 |
248 | [DllImport(DLL, EntryPoint = "pdf_count_pages", CallingConvention = CC.Cdecl)]
249 | public static extern int CountPages(IntPtr doc);
250 |
251 | [DllImport(DLL, EntryPoint = "pdf_bound_page", CallingConvention = CC.Cdecl)]
252 | public static extern void BoundPage(IntPtr doc, IntPtr page, ref RectangleMu bound);
253 |
254 | [DllImport(DLL, EntryPoint = "fz_clear_pixmap_with_value", CallingConvention = CC.Cdecl)]
255 | public static extern void ClearPixmap(IntPtr ctx, IntPtr pix, int byteValue);
256 |
257 | [DllImport(DLL, EntryPoint = "fz_lookup_device_colorspace", CallingConvention = CC.Cdecl)]
258 | public static extern IntPtr LookupDeviceColorSpace(IntPtr ctx, string colorspace);
259 |
260 | [DllImport(DLL, EntryPoint = "fz_free_device", CallingConvention = CC.Cdecl)]
261 | public static extern void FreeDevice(IntPtr dev);
262 |
263 | [DllImport(DLL, EntryPoint = "pdf_free_page", CallingConvention = CC.Cdecl)]
264 | public static extern void FreePage(IntPtr doc, IntPtr page);
265 |
266 | [DllImport(DLL, EntryPoint = "pdf_load_page", CallingConvention = CC.Cdecl)]
267 | public static extern IntPtr LoadPage(IntPtr doc, int pageNumber);
268 |
269 | [DllImport(DLL, EntryPoint = "fz_new_draw_device", CallingConvention = CC.Cdecl)]
270 | public static extern IntPtr NewDrawDevice(IntPtr ctx, IntPtr pix);
271 |
272 | [DllImport(DLL, EntryPoint = "fz_new_pixmap", CallingConvention = CC.Cdecl)]
273 | public static extern IntPtr NewPixmap(IntPtr ctx, IntPtr colorspace, int width, int height);
274 |
275 | [DllImport(DLL, EntryPoint = "pdf_run_page", CallingConvention = CC.Cdecl)]
276 | public static extern void RunPage(IntPtr doc, IntPtr page, IntPtr dev, ref MatrixMu transform, IntPtr cookie);
277 |
278 | [DllImport(DLL, EntryPoint = "fz_drop_pixmap", CallingConvention = CC.Cdecl)]
279 | public static extern void DropPixmap(IntPtr ctx, IntPtr pix);
280 |
281 | [DllImport(DLL, EntryPoint = "fz_pixmap_samples", CallingConvention = CC.Cdecl)]
282 | public static extern IntPtr GetSamples(IntPtr ctx, IntPtr pix);
283 | }
284 | #endregion
285 | }
286 | }
287 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/ImageConverter/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("ImageConverter")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("ImageConverter")]
13 | [assembly: AssemblyCopyright("Copyright © 2019")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("78212f45-d69e-4a84-8a26-a4bb5609b660")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/ImageConverter/README.md:
--------------------------------------------------------------------------------
1 | # Pdf file to image converter
2 | Tool to convert a pdf page to an image. It relies on the [_mupdf_](https://github.com/sumatrapdfreader/sumatrapdf) library, available in the [sumatra pdf reader](https://github.com/sumatrapdfreader/sumatrapdf/tree/master/mupdf/include/mupdf). See the __Sources__ for original code.
3 | Can be used with PdfPig.
4 |
5 | ## Sources
6 | * https://www.codeproject.com/articles/498317/rendering-pdf-documents-with-mupdf-and-p-invoke-in
7 | * https://github.com/wmjordan/mupdf/blob/master/MupdfSharp/Program.cs
8 | * https://github.com/reliak/moonpdf/blob/master/src/MoonPdfLib/MuPdf/MuPdfWrapper.cs
9 | * lib: https://github.com/sumatrapdfreader/sumatrapdf/tree/master/mupdf/include/mupdf/fitz
10 |
11 | ## Usage example (using PdfPig)
12 | The below example prints all pages of _test.pdf_ file the with the letter bounding boxes.
13 | ```csharp
14 | float zoom = 10;
15 | var greenPen = new Pen(Color.GreenYellow, zoom * 0.4f);
16 | var path = "test.pdf"
17 |
18 | using (var converter = new PdfImageConverter(path))
19 | using (var document = PdfDocument.Open(path))
20 | {
21 | for (var i = 0; i < document.NumberOfPages; i++)
22 | {
23 | var page = document.GetPage(i + 1);
24 |
25 | using (var bitmap = converter.GetPage(i + 1, zoom))
26 | using (var graphics = Graphics.FromImage(bitmap))
27 | {
28 | var imageHeight = bitmap.Height;
29 |
30 | foreach (var letter in page.Letters)
31 | {
32 | var rect = new Rectangle(
33 | (int)(letter.GlyphRectangle.Left * (decimal)zoom),
34 | imageHeight - (int)(letter.GlyphRectangle.Top * (decimal)zoom),
35 | (int)(letter.GlyphRectangle.Width * (decimal)zoom),
36 | (int)(letter.GlyphRectangle.Height * (decimal)zoom));
37 | graphics.DrawRectangle(greenPen, rect);
38 | }
39 |
40 | bitmap.Save(Path.ChangeExtension(path, (i + 1) + "_imageTest.png"));
41 | }
42 | }
43 | }
44 | ```
45 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/ImageConverter/Structures.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | /**********************************************************
4 | * https://github.com/wmjordan/mupdf/blob/master/MupdfSharp/Structures.cs
5 | **********************************************************/
6 |
7 | namespace ImageConverter
8 | {
9 | internal struct Point { public float X, Y; }
10 |
11 | public struct RectangleMu
12 | {
13 | public float Left, Top, Right, Bottom;
14 | public bool IsEmpty { get { return Left == Right || Top == Bottom; } }
15 | public bool IsInfinite { get { return Left > Right || Top > Bottom; } }
16 | }
17 |
18 | public struct MatrixMu
19 | {
20 | public float A, B, C, D, E, F;
21 | public MatrixMu(float a, float b, float c, float d, float e, float f)
22 | {
23 | this.A = a;
24 | this.B = b;
25 | this.C = c;
26 | this.D = d;
27 | this.E = e;
28 | this.F = f;
29 | }
30 |
31 | internal static readonly MatrixMu Identity = new MatrixMu(1, 0, 0, 1, 0, 0);
32 |
33 | private static float Min4(float a, float b, float c, float d)
34 | {
35 | return Math.Min(Math.Min(a, b), Math.Min(c, d));
36 | }
37 |
38 | private static float Max4(float a, float b, float c, float d)
39 | {
40 | return Math.Max(Math.Max(a, b), Math.Max(c, d));
41 | }
42 |
43 | internal static MatrixMu Concat(MatrixMu one, MatrixMu two)
44 | {
45 | return new MatrixMu(
46 | one.A * two.A + one.B * two.C,
47 | one.A * two.B + one.B * two.D,
48 | one.C * two.A + one.D * two.C,
49 | one.C * two.B + one.D * two.D,
50 | one.E * two.A + one.F * two.C + two.E,
51 | one.E * two.B + one.F * two.D + two.F);
52 | }
53 |
54 | internal static MatrixMu Scale(float x, float y)
55 | {
56 | return new MatrixMu(x, 0, 0, y, 0, 0);
57 | }
58 |
59 | internal MatrixMu ScaleTo(float x, float y)
60 | {
61 | return Concat(this, Scale(x, y));
62 | }
63 |
64 | internal static MatrixMu Shear(float h, float v)
65 | {
66 | return new MatrixMu(1, v, h, 1, 0, 0);
67 | }
68 |
69 | internal MatrixMu ShearTo(float x, float y)
70 | {
71 | return Concat(this, Shear(x, y));
72 | }
73 |
74 | internal static MatrixMu Rotate(float theta)
75 | {
76 | float s;
77 | float c;
78 |
79 | while (theta < 0)
80 | theta += 360;
81 | while (theta >= 360)
82 | theta -= 360;
83 |
84 | if (Math.Abs(0 - theta) < Single.Epsilon)
85 | {
86 | s = 0;
87 | c = 1;
88 | }
89 | else if (Math.Abs(90.0f - theta) < Single.Epsilon)
90 | {
91 | s = 1;
92 | c = 0;
93 | }
94 | else if (Math.Abs(180.0f - theta) < Single.Epsilon)
95 | {
96 | s = 0;
97 | c = -1;
98 | }
99 | else if (Math.Abs(270.0f - theta) < Single.Epsilon)
100 | {
101 | s = -1;
102 | c = 0;
103 | }
104 | else
105 | {
106 | s = (float)Math.Sin(theta * Math.PI / 180f);
107 | c = (float)Math.Cos(theta * Math.PI / 180f);
108 | }
109 |
110 | return new MatrixMu(c, s, -s, c, 0, 0);
111 | }
112 |
113 | internal MatrixMu RotateTo(float theta)
114 | {
115 | return Concat(this, Rotate(theta));
116 | }
117 |
118 | internal static MatrixMu Translate(float tx, float ty)
119 | {
120 | return new MatrixMu(1, 0, 0, 1, tx, ty);
121 | }
122 |
123 | internal MatrixMu TranslateTo(float tx, float ty)
124 | {
125 | return Concat(this, Translate(tx, ty));
126 | }
127 |
128 | internal Point Transform(Point p)
129 | {
130 | Point t;
131 | t.X = p.X * this.A + p.Y * this.C + this.E;
132 | t.Y = p.X * this.B + p.Y * this.D + this.F;
133 | return t;
134 | }
135 |
136 | internal RectangleMu Transform(RectangleMu rect)
137 | {
138 | Point s, t, u, v;
139 |
140 | if (rect.IsInfinite)
141 | return rect;
142 |
143 | s.X = rect.Left; s.Y = rect.Top;
144 | t.X = rect.Left; t.Y = rect.Bottom;
145 | u.X = rect.Right; u.Y = rect.Bottom;
146 | v.X = rect.Right; v.Y = rect.Top;
147 | s = this.Transform(s);
148 | t = this.Transform(t);
149 | u = this.Transform(u);
150 | v = this.Transform(v);
151 | rect.Left = Min4(s.X, t.X, u.X, v.X);
152 | rect.Top = Min4(s.Y, t.Y, u.Y, v.Y);
153 | rect.Right = Max4(s.X, t.X, u.X, v.X);
154 | rect.Bottom = Max4(s.Y, t.Y, u.Y, v.Y);
155 | return rect;
156 | }
157 | }
158 | }
159 |
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/ImageConverter/x64/libmupdf.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/ImageConverter/x64/libmupdf.dll
--------------------------------------------------------------------------------
/DocumentLayoutAnalysis/ImageConverter/x86/libmupdf.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BobLd/DocumentLayoutAnalysis/f2fe1fb875d023b91b378bcdf854b719f3504e49/DocumentLayoutAnalysis/ImageConverter/x86/libmupdf.dll
--------------------------------------------------------------------------------