Как установить другой фон для слайда, используя apache poi? - PullRequest
0 голосов
/ 25 октября 2018

Когда я устанавливаю цвет фона для слайда, он перезаписывает все цвета фона.Как я могу установить их отдельно?

Пример:

        XMLSlideShow ppt = new XMLSlideShow();
        XSLFSlide createSlide = ppt.createSlide();
        createSlide.getBackground().setFillColor(Color.BLUE);

        XSLFSlide createSlide2 = ppt.createSlide();
        createSlide2.getBackground().setFillColor(Color.RED);

Цвет фона станет красным.

1 Ответ

0 голосов
/ 26 октября 2018

XSLFSlide.getBackground получает фон из мастер-листа в slideMasters, если XSLFSlide еще не имеет фона.И после его создания у XSLFSlide уже нет фона.

Поэтому нам нужно как минимум установить пустой фон после создания слайда.Затем XSLFSlide.getBackground получает это вместо фона из основного листа.

Пример:

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();
 }
}
...