使用两种不同的格式创建TextBox

时间:2013-04-12 01:24:18

标签: java apache-poi

我试图创建一个有两种不同格式的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。

2 个答案:

答案 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()"。