新建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);