xlsf tutorial and cookbook updates
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1212978 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
81cff4c751
commit
95d0ab557b
@ -23,11 +23,16 @@
|
||||
<header>
|
||||
<title>XSLF Cookbook</title>
|
||||
<authors>
|
||||
<person email="yegor@dinom.ru" name="Yegor Kozlov" id="CO"/>
|
||||
<person email="yegor@apache.org" name="Yegor Kozlov" id="YK"/>
|
||||
</authors>
|
||||
</header>
|
||||
<body>
|
||||
<section><title>XSLF Cookbook</title>
|
||||
<p>
|
||||
This page offers a short introduction into the XSLF API. More examples can be found in the
|
||||
<link href="http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/"> XSLF Examples</link>
|
||||
in the POI SVN repository.
|
||||
</p>
|
||||
<note>
|
||||
Please note that XSLF is still in early development and is a subject to incompatible changes in a future release.
|
||||
</note>
|
||||
|
94
src/examples/src/org/apache/poi/xslf/usermodel/DataExtraction.java
Executable file
94
src/examples/src/org/apache/poi/xslf/usermodel/DataExtraction.java
Executable file
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import org.apache.poi.openxml4j.opc.PackagePart;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Demonstrates how you can extract data from a .pptx file
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public final class DataExtraction {
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
|
||||
if (args.length == 0) {
|
||||
System.out.println("Input file is required");
|
||||
return;
|
||||
}
|
||||
|
||||
FileInputStream is = new FileInputStream(args[0]);
|
||||
XMLSlideShow ppt = new XMLSlideShow(is);
|
||||
is.close();
|
||||
|
||||
// Get the document's embedded files.
|
||||
List<PackagePart> embeds = ppt.getAllEmbedds();
|
||||
for (PackagePart p : embeds) {
|
||||
String type = p.getContentType();
|
||||
String name = p.getPartName().getName(); //typically file name
|
||||
|
||||
InputStream pIs = p.getInputStream();
|
||||
// make sense of the part data
|
||||
pIs.close();
|
||||
|
||||
}
|
||||
|
||||
// Get the document's embedded files.
|
||||
List<XSLFPictureData> images = ppt.getAllPictures();
|
||||
for (XSLFPictureData data : images) {
|
||||
PackagePart p = data.getPackagePart();
|
||||
|
||||
String type = p.getContentType();
|
||||
String name = data.getFileName();
|
||||
|
||||
InputStream pIs = p.getInputStream();
|
||||
// make sense of the image data
|
||||
pIs.close();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Dimension pageSize = ppt.getPageSize(); // size of the canvas in points
|
||||
for(XSLFSlide slide : ppt.getSlides()) {
|
||||
for(XSLFShape shape : slide){
|
||||
Rectangle2D anchor = shape.getAnchor(); // position on the canvas
|
||||
if(shape instanceof XSLFTextShape) {
|
||||
XSLFTextShape txShape = (XSLFTextShape)shape;
|
||||
System.out.println(txShape.getText());
|
||||
} else if (shape instanceof XSLFPictureShape){
|
||||
XSLFPictureShape pShape = (XSLFPictureShape)shape;
|
||||
XSLFPictureData pData = pShape.getPictureData();
|
||||
System.out.println(pData.getFileName());
|
||||
} else {
|
||||
System.out.println("Process me: " + shape.getClass());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
50
src/examples/src/org/apache/poi/xslf/usermodel/MergePresentations.java
Executable file
50
src/examples/src/org/apache/poi/xslf/usermodel/MergePresentations.java
Executable file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
/**
|
||||
* Merge multiple pptx presentations together
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public final class MergePresentations {
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
XMLSlideShow ppt = new XMLSlideShow();
|
||||
|
||||
for(String arg : args){
|
||||
FileInputStream is = new FileInputStream(arg);
|
||||
XMLSlideShow src = new XMLSlideShow(is);
|
||||
is.close();
|
||||
|
||||
for(XSLFSlide srcSlide : src.getSlides()){
|
||||
ppt.createSlide().importContent(srcSlide);
|
||||
}
|
||||
}
|
||||
|
||||
FileOutputStream out = new FileOutputStream("merged.pptx");
|
||||
ppt.write(out);
|
||||
out.close();
|
||||
}
|
||||
|
||||
}
|
@ -1,86 +0,0 @@
|
||||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.geom.Ellipse2D;
|
||||
import java.awt.geom.GeneralPath;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
/**
|
||||
* Simple demo that creates a pptx slide show using the XSLF API
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class SlidesAndShapes {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
XMLSlideShow ppt = new XMLSlideShow();
|
||||
ppt.setPageSize(new Dimension(792, 612));
|
||||
|
||||
XSLFSlide slide1 = ppt.createSlide();
|
||||
XSLFTextBox textBox = slide1.createTextBox();
|
||||
XSLFTextRun r1 = textBox.addNewTextParagraph().addNewTextRun();
|
||||
r1.setBold(true);
|
||||
r1.setItalic(true);
|
||||
r1.setFontColor(Color.yellow);
|
||||
r1.setFontFamily("Arial");
|
||||
r1.setFontSize(24);
|
||||
r1.setText("Apache");
|
||||
XSLFTextRun r2 = textBox.addNewTextParagraph().addNewTextRun();
|
||||
r2.setStrikethrough(true);
|
||||
r2.setUnderline(true);
|
||||
r2.setText("POI\u2122");
|
||||
XSLFTextRun r3 = textBox.addNewTextParagraph().addNewTextRun();
|
||||
r3.setFontFamily("Wingdings");
|
||||
r3.setText(" Version 3.8");
|
||||
|
||||
textBox.setAnchor(new Rectangle(50, 50, 200, 100));
|
||||
textBox.setLineColor(Color.black);
|
||||
textBox.setFillColor(Color.orange);
|
||||
|
||||
XSLFAutoShape shape2 = slide1.createAutoShape();
|
||||
|
||||
shape2.setAnchor(new Rectangle(100, 100, 200, 200));
|
||||
|
||||
XSLFFreeformShape shape3 = slide1.createFreeform();
|
||||
Rectangle rect = new Rectangle(150, 150, 300, 300);
|
||||
GeneralPath path = new GeneralPath(rect);
|
||||
path.append(new Ellipse2D.Double(200, 200, 100, 50), false);
|
||||
shape3.setPath(path);
|
||||
shape3.setAnchor(path.getBounds2D());
|
||||
shape3.setLineColor(Color.black);
|
||||
shape3.setFillColor(Color.lightGray);
|
||||
|
||||
XSLFSlide slide2 = ppt.createSlide();
|
||||
XSLFGroupShape group = slide2.createGroup();
|
||||
|
||||
group.setAnchor(new Rectangle(0, 0, 792, 612));
|
||||
group.setInteriorAnchor(new Rectangle(-10, -10, 20, 20));
|
||||
|
||||
XSLFAutoShape shape4 = group.createAutoShape();
|
||||
shape4.setAnchor(new Rectangle(0, 0, 5, 5));
|
||||
shape4.setLineWidth(5);
|
||||
shape4.setLineColor(Color.black);
|
||||
|
||||
|
||||
FileOutputStream out = new FileOutputStream("xslf-demo.pptx");
|
||||
ppt.write(out);
|
||||
out.close();
|
||||
}
|
||||
|
||||
}
|
72
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial1.java
Executable file
72
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial1.java
Executable file
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Demonstrates how to create slides with predefined layout
|
||||
* and fill the placeholder shapes
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class Tutorial1 {
|
||||
|
||||
public static void main(String[] args) throws IOException{
|
||||
XMLSlideShow ppt = new XMLSlideShow();
|
||||
|
||||
// XSLFSlide#createSlide() with no arguments creates a blank slide
|
||||
XSLFSlide blankSlide = ppt.createSlide();
|
||||
|
||||
|
||||
XSLFSlideMaster master = ppt.getSlideMasters()[0];
|
||||
|
||||
XSLFSlideLayout layout1 = master.getLayout(SlideLayout.TITLE);
|
||||
XSLFSlide slide1 = ppt.createSlide(layout1) ;
|
||||
XSLFTextShape[] ph1 = slide1.getPlaceholders();
|
||||
XSLFTextShape titlePlaceholder1 = ph1[0];
|
||||
titlePlaceholder1.setText("This is a title");
|
||||
XSLFTextShape subtitlePlaceholder1 = ph1[1];
|
||||
subtitlePlaceholder1.setText("this is a subtitle");
|
||||
|
||||
XSLFSlideLayout layout2 = master.getLayout(SlideLayout.TITLE_AND_CONTENT);
|
||||
XSLFSlide slide2 = ppt.createSlide(layout2) ;
|
||||
XSLFTextShape[] ph2 = slide2.getPlaceholders();
|
||||
XSLFTextShape titlePlaceholder2 = ph2[0];
|
||||
titlePlaceholder2.setText("This is a title");
|
||||
XSLFTextShape bodyPlaceholder = ph2[1];
|
||||
// we are going to add text by paragraphs. Clear the default placehoder text before that
|
||||
bodyPlaceholder.clearText();
|
||||
XSLFTextParagraph p1 = bodyPlaceholder.addNewTextParagraph();
|
||||
p1.setLevel(0);
|
||||
p1.addNewTextRun().setText("Level1 text");
|
||||
XSLFTextParagraph p2 = bodyPlaceholder.addNewTextParagraph();
|
||||
p2.setLevel(1);
|
||||
p2.addNewTextRun().setText("Level2 text");
|
||||
XSLFTextParagraph p3 = bodyPlaceholder.addNewTextParagraph();
|
||||
p3.setLevel(3);
|
||||
p3.addNewTextRun().setText("Level3 text");
|
||||
|
||||
FileOutputStream out = new FileOutputStream("slides.pptx");
|
||||
ppt.write(out);
|
||||
out.close();
|
||||
}
|
||||
}
|
83
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial2.java
Executable file
83
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial2.java
Executable file
@ -0,0 +1,83 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Basic paragraph and text formatting
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class Tutorial2 {
|
||||
|
||||
public static void main(String[] args) throws IOException{
|
||||
XMLSlideShow ppt = new XMLSlideShow();
|
||||
|
||||
XSLFSlide slide1 = ppt.createSlide();
|
||||
XSLFTextBox shape1 = slide1.createTextBox();
|
||||
// initial height of the text box is 100 pt but
|
||||
Rectangle anchor = new Rectangle(10, 100, 300, 100);
|
||||
shape1.setAnchor(anchor);
|
||||
|
||||
XSLFTextParagraph p1 = shape1.addNewTextParagraph();
|
||||
XSLFTextRun r1 = p1.addNewTextRun();
|
||||
r1.setText("Paragraph Formatting");
|
||||
r1.setFontSize(24);
|
||||
r1.setFontColor(new Color(85, 142, 213));
|
||||
|
||||
XSLFTextParagraph p2 = shape1.addNewTextParagraph();
|
||||
// If spaceBefore >= 0, then space is a percentage of normal line height.
|
||||
// If spaceBefore < 0, the absolute value of linespacing is the spacing in points
|
||||
p2.setSpaceBefore(-20); // 20 pt from the previous paragraph
|
||||
p2.setSpaceAfter(300); // 3 lines after the paragraph
|
||||
XSLFTextRun r2 = p2.addNewTextRun();
|
||||
r2.setText("Paragraph properties apply to all text residing within the corresponding paragraph.");
|
||||
r2.setFontSize(16);
|
||||
|
||||
XSLFTextParagraph p3 = shape1.addNewTextParagraph();
|
||||
|
||||
XSLFTextRun r3 = p3.addNewTextRun();
|
||||
r3.setText("Run Formatting");
|
||||
r3.setFontSize(24);
|
||||
r3.setFontColor(new Color(85, 142, 213));
|
||||
|
||||
XSLFTextParagraph p4 = shape1.addNewTextParagraph();
|
||||
p4.setSpaceBefore(-20); // 20 pt from the previous paragraph
|
||||
p4.setSpaceAfter(300); // 3 lines after the paragraph
|
||||
XSLFTextRun r4 = p4.addNewTextRun();
|
||||
r4.setFontSize(16);
|
||||
r4.setText(
|
||||
"Run level formatting is the most granular property level and allows " +
|
||||
"for the specifying of all low level text properties. The text run is " +
|
||||
"what all paragraphs are derived from and thus specifying various " +
|
||||
"properties per run will allow for a diversely formatted text paragraph.");
|
||||
|
||||
// resize the shape to fit text
|
||||
shape1.resizeToFitText();
|
||||
|
||||
FileOutputStream out = new FileOutputStream("text.pptx");
|
||||
ppt.write(out);
|
||||
out.close();
|
||||
}
|
||||
}
|
47
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial3.java
Executable file
47
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial3.java
Executable file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* How to set slide title
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class Tutorial3 {
|
||||
|
||||
public static void main(String[] args) throws IOException{
|
||||
XMLSlideShow ppt = new XMLSlideShow();
|
||||
|
||||
XSLFSlide slide = ppt.createSlide();
|
||||
|
||||
XSLFTextShape titleShape = slide.createTextBox();
|
||||
titleShape.setPlaceholder(Placeholder.TITLE);
|
||||
titleShape.setText("This is a slide title");
|
||||
titleShape.setAnchor(new Rectangle(50, 50, 400, 100));
|
||||
|
||||
FileOutputStream out = new FileOutputStream("title.pptx");
|
||||
ppt.write(out);
|
||||
out.close();
|
||||
}
|
||||
}
|
89
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial4.java
Executable file
89
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial4.java
Executable file
@ -0,0 +1,89 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* PPTX Tables
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class Tutorial4 {
|
||||
|
||||
public static void main(String[] args) throws IOException{
|
||||
XMLSlideShow ppt = new XMLSlideShow();
|
||||
|
||||
// XSLFSlide#createSlide() with no arguments creates a blank slide
|
||||
XSLFSlide slide = ppt.createSlide();
|
||||
|
||||
XSLFTable tbl = slide.createTable();
|
||||
tbl.setAnchor(new Rectangle2D.Double(50, 50, 450, 300));
|
||||
|
||||
int numColumns = 3;
|
||||
int numRows = 5;
|
||||
XSLFTableRow headerRow = tbl.addRow();
|
||||
headerRow.setHeight(50);
|
||||
// header
|
||||
for(int i = 0; i < numColumns; i++) {
|
||||
XSLFTableCell th = headerRow.addCell();
|
||||
XSLFTextParagraph p = th.addNewTextParagraph();
|
||||
p.setTextAlign(TextAlign.CENTER);
|
||||
XSLFTextRun r = p.addNewTextRun();
|
||||
r.setText("Header " + (i+1));
|
||||
r.setBold(true);
|
||||
r.setFontColor(Color.white);
|
||||
th.setFillColor(new Color(79, 129, 189));
|
||||
th.setBorderBottom(2);
|
||||
th.setBorderBottomColor(Color.white);
|
||||
|
||||
tbl.setColumnWidth(i, 150); // all columns are equally sized
|
||||
}
|
||||
|
||||
// rows
|
||||
|
||||
for(int rownum = 0; rownum < numRows; rownum ++){
|
||||
XSLFTableRow tr = tbl.addRow();
|
||||
tr.setHeight(50);
|
||||
// header
|
||||
for(int i = 0; i < numColumns; i++) {
|
||||
XSLFTableCell cell = tr.addCell();
|
||||
XSLFTextParagraph p = cell.addNewTextParagraph();
|
||||
XSLFTextRun r = p.addNewTextRun();
|
||||
|
||||
r.setText("Cell " + (i+1));
|
||||
if(rownum % 2 == 0)
|
||||
cell.setFillColor(new Color(208, 216, 232));
|
||||
else
|
||||
cell.setFillColor(new Color(233, 247, 244));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
FileOutputStream out = new FileOutputStream("table.pptx");
|
||||
ppt.write(out);
|
||||
out.close();
|
||||
}
|
||||
}
|
50
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial5.java
Executable file
50
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial5.java
Executable file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import org.apache.poi.util.IOUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Images
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class Tutorial5 {
|
||||
|
||||
public static void main(String[] args) throws IOException{
|
||||
XMLSlideShow ppt = new XMLSlideShow();
|
||||
|
||||
XSLFSlide slide = ppt.createSlide();
|
||||
File img = new File(System.getProperty("POI.testdata.path"), "slideshow/clock.jpg");
|
||||
byte[] data = IOUtils.toByteArray(new FileInputStream(img));
|
||||
int pictureIndex = ppt.addPicture(data, XSLFPictureData.PICTURE_TYPE_PNG);
|
||||
|
||||
XSLFPictureShape shape = slide.createPicture(pictureIndex);
|
||||
|
||||
FileOutputStream out = new FileOutputStream("images.pptx");
|
||||
ppt.write(out);
|
||||
out.close();
|
||||
}
|
||||
}
|
59
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial6.java
Executable file
59
src/examples/src/org/apache/poi/xslf/usermodel/Tutorial6.java
Executable file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* ====================================================================
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Hyperlinks
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class Tutorial6 {
|
||||
|
||||
public static void main(String[] args) throws IOException{
|
||||
XMLSlideShow ppt = new XMLSlideShow();
|
||||
|
||||
XSLFSlide slide1 = ppt.createSlide();
|
||||
XSLFSlide slide2 = ppt.createSlide();
|
||||
|
||||
XSLFTextBox shape1 = slide1.createTextBox();
|
||||
shape1.setAnchor(new Rectangle(50, 50, 200, 50));
|
||||
XSLFTextRun r1 = shape1.addNewTextParagraph().addNewTextRun();
|
||||
XSLFHyperlink link1 = r1.createHyperlink();
|
||||
r1.setText("http://poi.apache.org"); // visible text
|
||||
link1.setAddress("http://poi.apache.org"); // link address
|
||||
|
||||
XSLFTextBox shape2 = slide1.createTextBox();
|
||||
shape2.setAnchor(new Rectangle(300, 50, 200, 50));
|
||||
XSLFTextRun r2 = shape2.addNewTextParagraph().addNewTextRun();
|
||||
XSLFHyperlink link2 = r2.createHyperlink();
|
||||
r2.setText("Go to the second slide"); // visible text
|
||||
link2.setAddress(slide2); // link address
|
||||
|
||||
|
||||
|
||||
FileOutputStream out = new FileOutputStream("hyperlinks.pptx");
|
||||
ppt.write(out);
|
||||
out.close();
|
||||
}
|
||||
}
|
@ -19,6 +19,7 @@
|
||||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import org.apache.poi.POIXMLException;
|
||||
import org.apache.poi.util.Beta;
|
||||
import org.apache.poi.util.Units;
|
||||
import org.apache.poi.xslf.model.PropertyFetcher;
|
||||
@ -454,6 +455,24 @@ public abstract class XSLFTextShape extends XSLFSimpleShape implements Iterable<
|
||||
return drawParagraphs(graphics, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjust the size of the shape so it encompasses the text inside it.
|
||||
*
|
||||
* @return a <code>Rectangle2D</code> that is the bounds of this <code>TextShape</code>.
|
||||
*/
|
||||
public Rectangle2D resizeToFitText(){
|
||||
Rectangle2D anchor = getAnchor();
|
||||
if(anchor.getWidth() == 0.) throw new POIXMLException(
|
||||
"Anchor of the shape was not set.");
|
||||
double height = getTextHeight();
|
||||
height += 1; // add a pixel to compensate rounding errors
|
||||
|
||||
anchor.setRect(anchor.getX(), anchor.getY(), anchor.getWidth(), height);
|
||||
setAnchor(anchor);
|
||||
|
||||
return anchor;
|
||||
}
|
||||
|
||||
/**
|
||||
* break the contained text into lines
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user