У меня есть текстовый документ (.docx), который содержит «рамку» письма, которое я хочу заполнить своей заявкой.Внутри приложения пользователь может создать контент для письма в текстовом редакторе (который создает HTML).Моя цель - вставить этот html (или преобразовать в rtf) в предопределенное поле формы в шаблоне слова.
Все, что я могу сейчас сделать, это заменить некоторый текст в шаблоне:
String htmlText = "<html><head></head><body><h1>Some text</h1></body></html>";
XWPFDocument doc = new XWPFDocument(new FileInputStream("P:/temp/Template.docx"));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Document iDoc = new Document();
RtfWriter2.getInstance(iDoc, bos);
HtmlParser hp = new HtmlParser();
hp.go(iDoc, new ByteArrayInputStream(htmlText.getBytes()));
doc = replaceText(doc, "$VAR", bos.toString("UTF-8"));
saveWord("P:/temp/CreatedLetter.docx", doc);
Текст можно заменить следующим образом:
protected XWPFDocument replaceText(XWPFDocument doc, String findText, String replaceText) {
XSSFRichTextString rtfString = new XSSFRichTextString();
rtfString.append(replaceText);
List<XWPFParagraph> paragraphs = doc.getParagraphs();
for (XWPFParagraph p : paragraphs) {
if (p.getText() != null && p.getText().equals(findText)) {
for (XWPFRun r : p.getRuns()) {
String text = r.getText(0);
if (text != null && text.contains(findText)) {
text = text.replace(findText, replaceText);
r.setText(text,0);
}
}
}
}
return doc;
}
После того, как я сохранил документ, текст richt будет сохранен как простой текст в документе.
Поэтому я попытался использоватьполе формы в шаблоне (поле формы текста richt) и вставьте туда текст.Однако API, который возвращает поля формы из документа, доступен только для чтения, поэтому нет возможности изменить содержимое поля формы.
Есть ли способ вставить html или rtf в текстовый документ,чтобы он отображался так, как его можно увидеть в браузере или html-редакторе?
Заранее благодарен за помощь!
Хольгер