Заполните поле формы документа Word содержимым RTF в Java, используя POI - PullRequest
0 голосов
/ 02 октября 2018

У меня есть текстовый документ (.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-редакторе?

Заранее благодарен за помощь!

Хольгер

...