簡體   English   中英

使用Java從PowerPoint Slide獲取背景圖像

[英]Get background image from PowerPoint Slide using Java

我需要使用Java從PowerPoint幻燈片中獲取背景圖像。 我知道Apache POI項目。 我可以找到從幻燈片中獲取文本和形狀的材料,但找不到實際的背景。 有沒有人有什么建議?

編輯:我使用建議的鏈接吱吱作響以下代碼。 這段代碼似乎抓住了幻燈片的內容,但並不完全是背景。 生成的圖像背景為白色。

我用這個PowerPoint嘗試過


package PowerPointProcessing;

import Logging.LogRunner;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;

import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.Background;
import org.apache.poi.hslf.model.Fill;
import org.apache.poi.hslf.model.Shape;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;


/**
 *
 * @author dvargo
 */
public class PPI
{

    Dimension pageSize;
    public Slide[] theSlides;

    public PPI(String powerPointFilePath)
    {
        SlideShow ppt = null;
        //open the presentation
        try
        {
            ppt = new SlideShow(new HSLFSlideShow(powerPointFilePath));
        }
        catch(Exception e)
        {
            LogRunner.getLogger().severe("Could not open the powerpoint presentation");
            return;

        }


        //get all the slides
        theSlides = ppt.getSlides();
        //see how many slides there are
        int numberOfSlides = theSlides.length;
        pageSize = ppt.getPageSize();


    }

    public BufferedImage getBackground(Slide theSlide)
    {
        Background background;
        background = theSlide.getBackground();
        Fill f = background.getFill();
        Color color = f.getForegroundColor();
        Shape[] theShapes = theSlide.getShapes();

        BufferedImage img = new BufferedImage(pageSize.width, pageSize.height, BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics = img.createGraphics();
        graphics.setPaint(color);
        graphics.fill(new Rectangle2D.Float(0, 0, pageSize.width, pageSize.height));
        theSlide.draw(graphics);
        return img;
    }

    public static void main(String[] args) {
        PPI ppi = new PPI("C:\\Documents and Settings\\dvargo\\Desktop\\Cludder\\a.ppt");
        int count= 0;
        for (Slide currSlide : ppi.theSlides)
        {
            BufferedImage img = ppi.getBackground(currSlide);
            try
            {
                ImageIO.write(img, "jpeg", new File("C:\\Documents and Settings\\dvargo\\Desktop\\ppt\\" + count + ".jpeg"));
            }
            catch (IOException ex)
            {
                Logger.getLogger(PPI.class.getName()).log(Level.SEVERE, null, ex);
            }
            count++;
        }
    }

}

查看此問題的代碼: 使用Apache Poi從pptx中提取圖像

看起來應該是這樣的:

Background background = slides[current].getBackground(); 
Fill f = background.getFill(); 
Color color = f.getForegroundColor(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM