HSLF操作PPT

3 篇文章 0 订阅
2 篇文章 0 订阅

新建PPT

//创建一个新的幻灯片

HSLFSlideShow ppt = newHSLFSlideShow();

   

//添加第一个幻灯片

HSLFSlide s1 =ppt.createSlide();

   

//添加第二个幻灯片

HSLFSlide s2 =ppt.createSlide();

   

//保存

FileOutputStream out = newFileOutputStream("slideshow.ppt");

ppt.write(out);

out.close();

查看和修改幻灯片大小

    HSLFSlideShow ppt = new HSLFSlideShow(newHSLFSlideShowImpl("slideshow.ppt"));

    //查看幻灯片大小. 点表示坐标

    java.awt.Dimension pgsize =ppt.getPageSize();

    int pgx = pgsize.width; //slide width

    int pgy = pgsize.height; //slide height

 

    //设置新的大小

    ppt.setPageSize(newjava.awt.Dimension(1024, 768));

    //保存

    FileOutputStream out = newFileOutputStream("slideshow.ppt");

    ppt.write(out);

    out.close();

                 

如何获得特定的形状包含在一个幻灯片

    HSLFSlideShow ppt = new HSLFSlideShow(newHSLFSlideShowImpl("slideshow.ppt"));

    // 获取幻灯片

    for (HSLFSlide slide : ppt.getSlides()) {

        for (HSLFShape sh : slide.getShapes()){

            // 形状名称

            String name = sh.getShapeName();

 

            // 在这个幻灯片中的形状的锚位置

            java.awt.Rectangle anchor =sh.getAnchor();

 

            if (sh instanceof Line) {

                Line line = (Line) sh;

                // 在行间

            } else if (sh instanceofHSLFAutoShape) {

                HSLFAutoShape shape = (HSLFAutoShape) sh;

                // 在自动填充区域内

            } else if (sh instanceofHSLFTextBox) {

                HSLFTextBox shape =(HSLFTextBox) sh;

                // 在文本框中

            } else if (sh instanceofHSLFPictureShape) {

                HSLFPictureShape shape =(HSLFPictureShape) sh;

                // 在图片中

            }

        }

    }

图片处理

HSLFSlideShow ppt = new HSLFSlideShow(newHSLFSlideShowImpl("slideshow.ppt"));

//
提取所有包含在演示中的图片
intidx = 1;
for (HSLFPictureData pict : ppt.getPictureData()) {

// 图片数据
byte[] data = pict.getData();


PictureData.PictureType type = pict.getType();
String ext = type.extension;
FileOutputStream out = new FileOutputStream("pict_" +idx + ext);
out.write(data);
out.close();
idx++;
}

//
给幻灯片添加新图片、插入新幻灯片
HSLFPictureData pd = ppt.addPicture(newFile("clock.jpg"), PictureData.PictureType.JPEG);


HSLFPictureShape pictNew = new HSLFPictureShape(pd);

// 设置图片在幻灯片中的位置
pictNew.setAnchor(new java.awt.Rectangle(100, 100, 300, 200));


HSLFSlide slide = ppt.createSlide();
slide.addShape(pictNew);

// 检索第一张幻灯片的图片并保存到磁盘上

idx = 1;
slide = ppt.getSlides().get(0);

for (HSLFShape sh : slide.getShapes()) {
if (sh instanceof HSLFPictureShape) {
HSLFPictureShape pict = (HSLFPictureShape) sh;
HSLFPictureData pictData = pict.getPictureData();
byte[] data = pictData.getData();
PictureData.PictureType type = pictData.getType();
FileOutputStream out = new FileOutputStream("slide0_" +idx + type.extension);
out.write(data);
out.close();
idx++;
}
}

FileOutputStream out = newFileOutputStream("slideshow.ppt");
ppt.write(out);
out.close();

幻灯片设置title

   HSLFSlideShow ppt = new HSLFSlideShow();

   HSLFSlide slide = ppt.createSlide();

   HSLFTextBox title = slide.addTitle();

   title.setText("Hello, World!");

 

    //保存

   FileOutputStream out = new FileOutputStream("slideshow.ppt");

   ppt.write(out);

   out.close();

                 

//精简版代码

   Set myDocument = ActivePresentation.Slides(1)

myDocument.Shapes.AddTitle.TextFrame.TextRange.Text= "Hello, World!"

 

修改幻灯片主题背景

    HSLFSlideShow ppt = new HSLFSlideShow();

    HSLFSlideMaster master =ppt.getSlideMasters().get(0);

 

    HSLFFill fill =master.getBackground().getFill();

    HSLFPictureData pd = ppt.addPicture(newFile("background.png"), PictureData.PictureType.PNG);

    fill.setFillType(HSLFFill.FILL_PICTURE);

    fill.setPictureData(pd);

                 

修改幻灯片背景

    HSLFSlideShow ppt = new HSLFSlideShow();

    HSLFSlide slide = ppt.createSlide();

 

    // 这一行用自己的背景.

    // 除了这一行其余都是用的主题背景.

    slide.setFollowMasterBackground(false);

    HSLFFill fill =slide.getBackground().getFill();

    HSLFPictureData pd = ppt.addPicture(newFile("background.png"), PictureData.PictureType.PNG);

    fill.setFillType(HSLFFill.FILL_PATTERN);

    fill.setPictureData(pd);   

                 

How to modifybackground of a shape

    HSLFSlideShow ppt = new HSLFSlideShow();

    HSLFSlide slide = ppt.createSlide();

   

    HSLFShape shape = newHSLFAutoShape(ShapeType.RECT);

    shape.setAnchor(new java.awt.Rectangle(100,100, 200, 200));

    HSLFFill fill = shape.getFill();

    fill.setFillType(HSLFFill.FILL_SHADE);

    fill.setBackgroundColor(Color.red);

    fill.setForegroundColor(Color.green);

   

    slide.addShape(shape);

                 

如何创建项目符号列表

    HSLFSlideShow ppt = new HSLFSlideShow();

    HSLFSlide slide = ppt.createSlide();

    HSLFTextBox shape = new HSLFTextBox();

    HSLFTextParagraph tp =shape.getTextParagraphs().get(0);

    tp.setBullet(true);

    tp.setBulletChar('\u263A');

    tp.setIndent(0.);

    tp.setLeftMargin(50.);   //文本偏移

    HSLFTextRun rt = tp.getTextRuns().get(0);

    shape.setText(

        "January\r" +

        "February\r" +

        "March\r" +

        "April");

    rt.setFontSize(42.);

    slide.addShape(shape);

 

             shape.setAnchor(newjava.awt.Rectangle(50, 50, 500, 300)); //文本框的位置

    slide.addShape(shape);

 

    FileOutputStream out = newFileOutputStream("bullets.ppt");

    ppt.write(out);

    out.close();

               

阅读超链接的幻灯片

    FileInputStream is = newFileInputStream("slideshow.ppt");

    HSLFSlideShow ppt = new HSLFSlideShow(is);

    is.close();

 

    for (HSLFSlide slide : ppt.getSlides()) {

        //read hyperlinks from the text runs

        for (List<HSLFTextParagraph> txt: slide.getTextParagraphs()) {

            for (HSLFTextParagraph para : txt){

                for (HSLFTextRun run : para) {

                    HSLFHyperlink link =run.getHyperlink();

                    if (link != null) {

                        String title = link.getLabel();

                        String address =link.getAddress();

                        String text =run.getRawText();

                    }

                }

            }

        }

 

        //在演示文稿中可以插入一个没有文字的超链接

        for (HSLFShape sh : slide.getShapes()){

            if (sh instanceof HSLFSimpleShape){

                HSLFHyperlink link =((HSLFSimpleShape)sh).getHyperlink();

                if(link != null)  {

                    String title =link.getLabel();

                    String address =link.getAddress();

                }

            }

        }

    }

               

如何创建表

    //表数据             

    String[][] data = {

        {"INPUT FILE", "NUMBEROF RECORDS"},

        {"Item File","11,559"},

        {"Vendor File","300"},

        {"Purchase History File","10,000"},

        {"Total # of requisitions","10,200,038"}

    };

 

    HSLFSlideShow ppt = new HSLFSlideShow();

 

    HSLFSlide slide = ppt.createSlide();

    //建表5行2列

    HSLFTable table = new HSLFTable(5, 2);

    for (int i = 0; i < data.length; i++) {

        for (int j = 0; j < data[i].length;j++) {

            HSLFTableCell cell =table.getCell(i, j);

            cell.setText(data[i][j]);

 

            HSLFTextRun rt = cell.getTextParagraphs().get(0).getTextRuns().get(0);

           rt.setFontFamily("Arial");

            rt.setFontSize(10.);

 

           cell.setVerticalAlignment(VerticalAlignment.MIDDLE);

            cell.setHorizontalCentered(true);

        }

    }

 

    //设置表格边框

    Line border = table.createBorder();

    border.setLineColor(Color.black);

    border.setLineWidth(1.0);

    table.setAllBorders(border);

 

    //第一列的宽度

    table.setColumnWidth(0, 300);

    //第二列的宽度

    table.setColumnWidth(1, 150);

 

    slide.addShape(table);

    table.moveTo(100, 100);

 

    FileOutputStream out = newFileOutputStream("hslf-table.ppt");

    ppt.write(out);

    out.close();

                   

从幻灯片如何删除shape

    for (HSLFShape shape : slide.getShapes()) {

        //删除的形状

        boolean ok = slide.removeShape(shape);

        if (ok) {

            // shape 删除,Dosomething.

        }

    }

                   

如何检索嵌入式OLE对象

    for (HSLFShape shape : slide.getShapes()) {

        if (shape instanceof OLEShape) {

            OLEShape ole = (OLEShape) shape;

            HSLFObjectData data =ole.getObjectData();

            String name =ole.getInstanceName();

            if("Worksheet".equals(name)) {

                HSSFWorkbook wb = newHSSFWorkbook(data.getData());

            } else if("Document".equals(name)) {

                HWPFDocument doc = newHWPFDocument(data.getData());

            }

        }

    }

                   

如何检索嵌入式的声音

    FileInputStream is = newFileInputStream(args[0]);

    HSLFSlideShow ppt = new HSLFSlideShow(is);

    is.close();

 

    for (HSLFSoundData sound :ppt.getSoundData()) {

        //磁盘上保存* WAV

        if(sound.getSoundType().equals(".WAV")) {

            FileOutputStream out = newFileOutputStream(sound.getSoundName());

            out.write(sound.getData());

            out.close();

        }

    }

                   

How to createshapes of arbitrary geometry

    HSLFSlideShow ppt = new HSLFSlideShow();

    HSLFSlide slide = ppt.createSlide();

 

    java.awt.geom.GeneralPath path = newjava.awt.geom.GeneralPath();

    path.moveTo(100, 100);

    path.lineTo(200, 100);

    path.curveTo(50, 45, 134, 22, 78, 133);

    path.curveTo(10, 45, 134, 56, 78, 100);

    path.lineTo(100, 200);

    path.closePath();

 

    HSLFFreeformShape shape = newHSLFFreeformShape();

    shape.setPath(path);

    slide.addShape(shape);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值