2

我正在使用 apache poi hslf 生成 ppt。我想在文本框中写,比如第一行是标题并且是粗体,其余是内容而不是粗体。我使用 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();
}

感谢您对此事的任何帮助,谢谢。

4

1 回答 1

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();
}
于 2017-08-26T21:59:33.037 回答