Несколько лет назад я решал подобную проблему. Самый простой способ - использовать файлы RTF в качестве шаблонов и избегать использования какой-либо библиотеки синтаксического анализа, потому что RTF MS Office не настолько стандартен, как вы могли бы ожидать, и любая библиотека, которая пытается «понять» этот формат, имеет тенденцию терять часть форматирования.
Поэтому я просто открыл файлы rtf в виде обычного текста и искал в нем свои ключевые слова. Возникла проблема, когда эти ключевые слова были разделены на несколько частей, разделенных на несколько не значащих частей.
Я буду искать мои источники Delphi и постараюсь перенести их на Java позже на этой неделе.