我试图创建一个有两种不同格式的org.apache.poi.hslf.model.TextBox。我希望一些文本大小为14,粗体,其余大小为10而不是粗体。
我尝试过这样的事情:
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。
答案 0 :(得分: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();
}
}
答案 1 :(得分:0)
问题是" setText()"会覆盖之前的文本集,因此您只能看到最后设置的文本。为了在现有文本之后添加任何其他文本,请使用" appendText()"。