ElementReader

Sample C# code for using Apryse SDK to traverse the page display list using ElementReader.

Learn more about our full PDF Data Extraction SDK Capabilities.

To start your free trial, get stated with UWP SDK.

1//
2// Copyright (c) 2001-2020 by PDFTron Systems Inc. All Rights Reserved.
3//
4
5using System;
6using System.IO;
7using System.Threading.Tasks;
8using Windows.Foundation;
9
10using pdftron.PDF;
11using pdftron.SDF;
12
13using PDFNetUniversalSamples.ViewModels;
14
15namespace PDFNetSamples
16{
17 public sealed class ElementReaderTest : Sample
18 {
19 public ElementReaderTest() :
20 base("ElementReader", "Illustrates how to traverse page display list using ElementReader.")
21 {
22 }
23
24 public override IAsyncAction RunAsync()
25 {
26 return Task.Run(new System.Action(() => {
27 WriteLine("--------------------------------");
28 WriteLine("Starting ElementReader Test...");
29 WriteLine("--------------------------------\n");
30 try {
31 WriteLine("-------------------------------------------------");
32 WriteLine("Extract text data from all pages in the document.");
33
34 // Open the test file
35 string input_file_path = Path.Combine(InputPath, "newsletter.pdf");
36 WriteLine("Opening input file: " + input_file_path);
37 PDFDoc doc = new PDFDoc(input_file_path);
38 doc.InitSecurityHandler();
39
40 PageIterator itr;
41 pdftron.PDF.ElementReader page_reader = new pdftron.PDF.ElementReader();
42
43 //int i = 0;
44 for (itr = doc.GetPageIterator(); itr.HasNext(); itr.Next()) // Read every page
45 {
46 int pageNo = itr.GetPageNumber();
47 WriteLine(String.Format("Page {0:d} ----------------------------------------", pageNo));
48
49 page_reader.Begin(itr.Current());
50 String result = ProcessElements(page_reader);
51 WriteLine(result);
52 page_reader.End();
53 }
54 WriteLine("Done.");
55 doc.Destroy();
56 }
57 catch (Exception e) {
58 WriteLine(GetExceptionMessage(e));
59 }
60
61 WriteLine("\n--------------------------------");
62 WriteLine("Done ElementReader Test.");
63 WriteLine("--------------------------------\n");
64 })).AsAsyncAction();
65 }
66
67 String ProcessElements(ElementReader reader)
68 {
69 String result = "";
70 Element element;
71 //int i = 0;
72 while ((element = reader.Next()) != null) // Read page contents
73 {
74 switch (element.GetType())
75 {
76 case ElementType.e_path: // Process path data...
77 {
78 result += "Process Element.Type.e_path\n";
79 //PathData data = element.GetPathData();
80 //double[] points = data.get_pts();// points;
81 break;
82 }
83 case ElementType.e_image: // Process images...
84 case ElementType.e_inline_image:
85 {
86 result += "Process Element.Type.e_image\n";
87 break;
88 }
89 case ElementType.e_text: // Process text strings...
90 {
91 result += "Process Element.Type.e_text\n";
92 //String txt = element.GetTextString();
93 // Message+=(txt);
94 break;
95 }
96 case ElementType.e_form: // Process form XObjects
97 {
98 result += "Process Element.Type.e_form\n";
99 reader.FormBegin();
100 result += ProcessElements(reader);
101 reader.End();
102 break;
103 }
104 }
105 }
106 return result;
107 }
108 }
109}

Did you find this helpful?

Trial setup questions?

Ask experts on Discord

Need other help?

Contact Support

Pricing or product questions?

Contact Sales