如何使用 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.getBackgroundslideMasters 中的主 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();
 }
}