Hi,
I have problem with setBulletAutoNumber, I always get error when I open that
powerpoint slide.
Here is the error:
PowerPoint found a problem with content... PowerPoint can attempt to repair
the presentation.
If you trust the source of this presentation, click Repair.
Here is what I did:
import java.awt.geom.Rectangle2D;
import java.io.FileOutputStream;
import org.apache.poi.sl.usermodel.AutoNumberingScheme;
import org.apache.poi.sl.usermodel.TextParagraph.TextAlign;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;
public class ArabicBulletDemo {
private static String[] getDummyData(int rows) {
String[] data = new String[rows + 1];
for (int row = 0; row < rows; row++) {
data[row] = "Numbered List Item " + (row + 1);
}
return data;
}
private static Rectangle2D getNextAnchor(Rectangle2D anchor) {
return new Rectangle2D.Double(anchor.getX(), anchor.getMaxY(),
anchor.getWidth(), anchor.getHeight());
}
private static XSLFTextShape createTextBox(XSLFSlide slide, Rectangle2D
anchor) {
XSLFTextShape textShape = slide.createTextBox();
textShape.setAnchor(anchor);
return textShape;
}
private static void diplayBullet(XSLFTextShape shape, String text, int
start) {
XSLFTextParagraph p = shape.addNewTextParagraph();
int startAlphabet = start;
if (start < 0)
startAlphabet = 1;
p.setTextAlign(TextAlign.LEFT);
p.setIndent(-40d);
p.setBullet(true);
p.setIndentLevel(0);
p.setBulletAutoNumber(AutoNumberingScheme.arabicParenRight,
startAlphabet);
XSLFTextRun r = p.addNewTextRun();
r.setText(text);
}
public static void main(String[] args) throws Exception {
String data[] = getDummyData(10);
try (XMLSlideShow ppt = new XMLSlideShow()) {
XSLFSlide slide = ppt.createSlide();
int x = 50, y = 40;
Rectangle2D anchor = new Rectangle2D.Double(x, y,
ppt.getPageSize().getWidth() - (x * 2), y);
for (int r = 0; r < data.length; r++) {
XSLFTextShape shape = createTextBox(slide,
anchor);
diplayBullet(shape, data[r], (r + 1));
anchor = getNextAnchor(shape.getAnchor());
}
try (FileOutputStream fos = new
FileOutputStream("output/ArabicBulletDemo.pptx")) {
ppt.write(fos);
}
}
}
}
You can look at attachment files.
<http://apache-poi.1045710.n5.nabble.com/file/t340639/setBulletAutoNumber_error.png>
<http://apache-poi.1045710.n5.nabble.com/file/t340639/setBulletAutoNumber_error_1.png>
Note: if I don't use:
p.setBulletAutoNumber(AutoNumberingScheme.arabicParenRight, startAlphabet);
It will work as default bullet.
Could you help to have a look for that issue?
Thanks
--
Sent from: http://apache-poi.1045710.n5.nabble.com/POI-Dev-f2312866.html
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]