标题为粗体但非标题应使用apache poi hslf在ppt文本框中为非粗体

时间:2017-08-26 21:17:58

标签: java apache-poi hslf

我正在使用apache poi hslf进行ppt genertion。我想写在文本框中,如第一行是标题和粗体,休息是内容和非粗体。我已经使用HSLFTextRun来保持标题和内容的设置不同。我遇到的问题是每当我对标题文本运行应用setbold(true)时。它也使内容变得粗体。虽然我已经尝试为内容设置setbold(false)但没有用。以下是代码

     public static void main(String[] args) throws IOException {
        HSLFSlideShow ppt = new HSLFSlideShow();
        HSLFSlide slide = ppt.createSlide();
        HSLFTextBox tb = slide.createTextBox();
        tb.setAnchor(new Rectangle(100, 100, 200, 200));

        HSLFTextRun titleTR = tb.appendText("Title", true);
        titleTR.setBold(true);

        HSLFTextRun bullet1TR = tb.appendText(" bullet1", true);
        bullet1TR.getTextParagraph().setBullet(true);
        bullet1TR.setBold(false);
        HSLFTextRun bullet2TR = tb.appendText(" bullet2", true);
        bullet2TR.getTextParagraph().setBullet(true);
        bullet2TR.setBold(false);
        FileOutputStream fos = new FileOutputStream("bullet.ppt");
        ppt.write(fos);
        fos.close();
            ppt.close();
}

对此事的任何帮助表示赞赏, 感谢。

1 个答案:

答案 0 :(得分:0)

无论出于何种原因,如果你在最后设置粗体文字,它对我有用:

public static void main(String[] args) throws IOException {
    HSLFSlideShow ppt = new HSLFSlideShow();
    HSLFSlide slide = ppt.createSlide();
    HSLFTextBox tb = slide.createTextBox();
    tb.setAnchor(new Rectangle(100, 100, 200, 200));

    HSLFTextRun titleTR = tb.appendText("Title", false);
    tb.appendText("\n", false);

    HSLFTextRun bullet1TR = tb.appendText(" bullet1", true);
    bullet1TR.getTextParagraph().setBullet(true);

    HSLFTextRun bullet2TR = tb.appendText(" bullet2", true);
    bullet2TR.getTextParagraph().setBullet(true);

    titleTR.setBold(true);

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