Some test text!
To extract text from a PDF document.
doc = PDFDoc(filename) page = doc.GetPage(1) txt = TextExtractor() txt.Begin(page) # Read the page word = Word() line = txt.GetFirstLine() while line.IsValid(): word = line.GetFirstWord() while word.IsValid(): # word.GetString() word = word.GetNextWord() line = line.GetNextLine()
Read a PDF File sample
Full sample code which illustrates the basic text extraction capabilities.
To extract text from under an annotation in the document.
doc = PDFDoc(filename) page = doc.GetPage(1) annotation = page.GetAnnot(0) txt = TextExtractor() txt.Begin(page) # Read the page textData = txt.GetTextUnderAnnot(annotation)
When we use the
ElementReader class to read elements from a PDF document, we are often faced with data that is partial. For example, let us say that we are attempting to extract a sentence that says "This is a sample sentence." from a PDF document. We could potentially end up with two elements - "T" and "his is a sample sentence.". This is possible because in a PDF document, text objects are not always cleanly organized into words sentences, or paragraphs. The
ElementReader class will return
Element objects exactly as they are defined in the PDF page content stream.
An element of type
e_text directly corresponds to a
Tj element in the PDF document. Each
e_text element represents a text run, which represents a sequence of text glyphs that use the same font and graphics attributes. Say, if there is a single word, whose letters are each presented with a different font, then each letter would be a separate text run. You may also encounter text runs that contain multiple words separated by spaces. The PDF format does not guarantee that the text will be presented in reading order.
All this just goes to say that attempting to use an
ElementReader to extract text data from a PDF document is not guaranteed to return data in the order expected (reading order). The most straightforward approach to extract words and text from text-runs is using the
pdftron.PDF.TextExtractor class, as shown in the
TextExtract sample project - TextExtract Sample
TextExtractor will assemble words, lines, and paragraphs, remove duplicate strings, reconstruct text reading order, etc. Using
TextExtractor you can also obtain bounding boxes for each word, line, or paragraph (along with style information such as font, color, etc). This information can be used to search for corresponding text elements using
One of the more difficult things to do with a PDF document is extracting tabular data. PDFTron.AI can extract tables, text, and reading order from existing PDF documents in the form of HTML output.
Please see our online demo to try out the PDFTron.AI tool.
You can interface with its REST API endpoint directly for demo purposes.
The REST API is a post request to
https://test.pdftron.com/predict. It will provide an HTML and XFDF in its response.
Here's an example code snippet for uploading a PDF to the demo:
file = new File([fileData], 'mypdf.pdf'); const xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = () => this.handleResp(xhttp, originalFile, 'local'); const endpoint = 'https://test.pdftron.com/predict'; xhttp.open('POST', endpoint, true); xhttp.setRequestHeader("Content-type", "application/json"); xhttp.setRequestHeader("File-Name", originalName || 'mypdf.pdf') xhttp.send(originalFile);
Get the answers you need: Support
Get unlimited trial usage of PDFTron SDK to bring accurate, reliable, and fast document processing capabilities to any application or workflow.
Select a platform to get started with your free trial.
Unlimited usage. No email address required.
Join our live demo to learn about use cases & capabilities for WebViewerLearn more