Extract formatted text from document page
GroupDocs.Parser provides the functionality to extract a formatted text from document page by the getFormattedText(int, FormattedTextOptions) method:
TextReader getFormattedText(int pageIndex, FormattedTextOptions options);
The method returns an instance of TextReader class with an extracted text. FormattedTextOptions has the following constructor:
FormattedTextOptions(FormattedTextMode mode);
FormattedTextMode enumeration has the following members:
Member | Description |
---|---|
Html | HTML format. |
Markdown | Markdown format. |
PlainText | Plain text format. |
TextReader class extends java.io.Reader and adds the following members:
Member | Description |
---|---|
readLine | Reads a line of characters from the text reader and returns the data as a string. |
readToEnd | Reads all characters from the current position to the end of the text reader and returns them as one string. |
Here are the steps to extract a HTML formatted page text from the document:
- Instantiate Parser object for the initial document;
- Instantiate FormattedTextOptions with HTML text mode;
- Call getFormattedText(int, FormattedTextOptions) method with the page index and obtain TextReader object;
- Check if reader isn’t null (formatted text extraction is supported for the document);
- Read a text from reader.
The following example shows how to extract a document page text as Markdown text:
// Create an instance of Parser class
try (Parser parser = new Parser(Constants.SampleDocx)) {
// Check if the document supports formatted text extraction
if (!parser.getFeatures().isFormattedText()) {
System.out.println("Document isn't supports formatted text extraction.");
return;
}
// Get the document info
IDocumentInfo documentInfo = parser.getDocumentInfo();
// Check if the document has pages
if (documentInfo.getPageCount() == 0) {
System.out.println("Document hasn't pages.");
return;
}
// Iterate over pages
for (int p = 0; p < documentInfo.getPageCount(); p++) {
// Print a page number
System.out.println(String.format("Page %d/%d", p + 1, documentInfo.getPageCount()));
// Extract a formatted text into the reader
try (TextReader reader = parser.getFormattedText(p, new FormattedTextOptions(FormattedTextMode.Markdown))) {
// Print a formatted text from the document
// We ignore null-checking as we have checked formatted text extraction feature support earlier
System.out.println(reader.readToEnd());
}
}
}
More resources
GitHub examples
You may easily run the code above and see the feature in action in our GitHub examples:
Free online document parser App
Along with full featured Java library we provide simple, but powerful free Apps.
You are welcome to extract data from PDF, DOC, DOCX, PPT, PPTX, XLS, XLSX, Emails and more with our free online Free Online Document Parser App.