如何使用 apache poi 为幻灯片设置不同的背景?
How to set a different background to the slide by using apache poi?
当我为幻灯片设置背景色时,它会覆盖所有背景色。如何分别设置?
例子:
XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide createSlide = ppt.createSlide();
createSlide.getBackground().setFillColor(Color.BLUE);
XSLFSlide createSlide2 = ppt.createSlide();
createSlide2.getBackground().setFillColor(Color.RED);
背景颜色全部变为红色。
如果 XSLFSlide
还没有背景,XSLFSlide.getBackground 从 slideMasters
中的主 sheet 获取背景。新创建后 XSLFSlide
还没有背景。
所以我们至少需要在创建幻灯片后设置一个空白背景。然后 XSLFSlide.getBackground
从 master sheet.
获取这个而不是背景
示例:
import java.io.FileOutputStream;
import org.apache.poi.xslf.usermodel.*;
import org.apache.poi.sl.usermodel.*;
import java.awt.Color;
public class CreatePPTXSheetsDifferentBackground {
public static void main(String[] args) throws Exception {
XMLSlideShow slideShow = new XMLSlideShow();
XSLFSlide slide = slideShow.createSlide();
if (slide.getXmlObject().getCSld().getBg() == null) slide.getXmlObject().getCSld().addNewBg();
slide.getBackground().setFillColor(Color.BLUE);
slide = slideShow.createSlide();
if (slide.getXmlObject().getCSld().getBg() == null) slide.getXmlObject().getCSld().addNewBg();
slide.getBackground().setFillColor(Color.RED);
FileOutputStream out = new FileOutputStream("CreatePPTXSheetsDifferentBackground.pptx");
slideShow.write(out);
out.close();
}
}
当我为幻灯片设置背景色时,它会覆盖所有背景色。如何分别设置?
例子:
XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide createSlide = ppt.createSlide();
createSlide.getBackground().setFillColor(Color.BLUE);
XSLFSlide createSlide2 = ppt.createSlide();
createSlide2.getBackground().setFillColor(Color.RED);
背景颜色全部变为红色。
XSLFSlide
还没有背景,XSLFSlide.getBackground 从 slideMasters
中的主 sheet 获取背景。新创建后 XSLFSlide
还没有背景。
所以我们至少需要在创建幻灯片后设置一个空白背景。然后 XSLFSlide.getBackground
从 master sheet.
示例:
import java.io.FileOutputStream;
import org.apache.poi.xslf.usermodel.*;
import org.apache.poi.sl.usermodel.*;
import java.awt.Color;
public class CreatePPTXSheetsDifferentBackground {
public static void main(String[] args) throws Exception {
XMLSlideShow slideShow = new XMLSlideShow();
XSLFSlide slide = slideShow.createSlide();
if (slide.getXmlObject().getCSld().getBg() == null) slide.getXmlObject().getCSld().addNewBg();
slide.getBackground().setFillColor(Color.BLUE);
slide = slideShow.createSlide();
if (slide.getXmlObject().getCSld().getBg() == null) slide.getXmlObject().getCSld().addNewBg();
slide.getBackground().setFillColor(Color.RED);
FileOutputStream out = new FileOutputStream("CreatePPTXSheetsDifferentBackground.pptx");
slideShow.write(out);
out.close();
}
}