2013-04-12 5 views
1

Я пытаюсь создать org.apache.poi.hslf.model.TextBox, который имеет два разных типа форм. Я хочу, чтобы часть текста была размером 14 и жирным шрифтом, а остальное - размером 10 и не жирным.Создать TextBox с двумя различными форматами

Я пытался что-то вдоль линий этого:

TextRun run = textBox.createTextRun(); 
run.setText("small text"\n); 

TextRun run = textBox.createTextRun(); 
RichTextRun format = run.getRichTextRuns()[0]; 
format.setBold(true); 
format.setFontSize(14); 
run.setText("big text"); 

Однако только «большой текст» показывает вверх.

Кто-нибудь знает, как это сделать. Я действительно хотел бы сохранить это в одном TextBox.

ответ

1

Вам необходимо позвонить TextRun.appendText() вместо того, чтобы звонить TextRun.createTextRun() дважды, потому что второй вызов перезапишет первый экземпляр.

import java.awt.geom.Rectangle2D; 
import java.io.FileOutputStream; 
import org.apache.poi.hslf.model.*; 
import org.apache.poi.hslf.usermodel.*; 

public class HslfTextBox { 
    public static void main(String[] args) throws Exception { 
     SlideShow ppt = new SlideShow(); 
     Slide s = ppt.createSlide(); 
     TextBox txt = new TextBox(); 
     txt.setAnchor(new Rectangle2D.Double(100,100,100,100)); 
     TextRun run = txt.createTextRun(); 
     RichTextRun rtr1 = run.getRichTextRuns()[0]; 
     rtr1.setText("small text\n"); 
     rtr1.setFontSize(10); 
     RichTextRun rtr2 = run.appendText("big text\n"); 
     rtr2.setBold(true); 
     rtr2.setFontSize(14); 
     s.addShape(txt); 

     FileOutputStream fos = new FileOutputStream("hssftext.ppt"); 
     ppt.write(fos); 
     fos.close(); 
    } 
} 
0

Проблема заключается в том, что «SetText()» переписывает текст поставленную перед, как результат вы можете увидеть только последний набор текста. Чтобы добавить дополнительный текст после существующего текста, используйте «appendText()».

Смежные вопросы