0
私はapache poi hslfを使用してパワーポイントにテキストボックスを追加します。テキストボックスでは、同じテキストボックスに見出しを付けてから箇条書きを追加します。しかし、私がrichtextrun.setbullet(true)を適用する場合。見出しは別々のリッチテキストで実行されますが、見出しの付いた箇条書きも配置されます。どんな助けもありがとう。私はサンプルコードを添付しています。事前にpptでapache poi hslfを使用して箇条書きと非箇条書きを追加する
import org.apache.poi.hslf.record.StyleTextPropAtom;
import org.apache.poi.hslf.record.TextCharsAtom;
import org.apache.poi.hslf.record.Record;
import org.apache.poi.hslf.model.*;
import org.apache.poi.hslf.model.textproperties.TextPropCollection;
import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.hslf.usermodel.RichTextRun;
import java.awt.*;
import java.io.*;
public class test {
public static void main(String[] args) throws Exception {
SlideShow ppt = new SlideShow();
Slide slide = ppt.createSlide();
TextShape shape = new TextBox();
shape.setSheet(slide);
TextRun run = shape.getTextRun();
StyleTextPropAtom styleAtom = null;
TextCharsAtom textAtom = null;
for(Record r : run.getRecords()){
if(r instanceof StyleTextPropAtom) styleAtom = (StyleTextPropAtom)r;
else if(r instanceof TextCharsAtom) textAtom = (TextCharsAtom)r;
}
styleAtom.getParagraphStyles().clear();
styleAtom.getCharacterStyles().clear();
StringBuffer text = new StringBuffer();
TextPropCollection prProps, chProps;
RichTextRun rt;
String chunk;
//begin building rich text runs
//this should be heading and without bullet ppoint
chunk = " Apache POI";
text.append(chunk);
prProps = styleAtom.addParagraphTextPropCollection(chunk.length());
chProps = styleAtom.addCharacterTextPropCollection(chunk.length());
rt = new RichTextRun(shape.getTextRun(), text.length(), chunk.length(), null, chProps, false, false);
rt.supplySlideShow(ppt);
rt.setFontColor(Color.green);
rt.setItalic(true);
rt.setFontSize(24);
String chunk = " \r is \r cool";
int len = chunk.length();
text.append(chunk);
prProps = styleAtom.addParagraphTextPropCollection(chunk.length());
chProps = styleAtom.addCharacterTextPropCollection(chunk.length());
rt = new RichTextRun(shape.getTextRun(), text.length(), chunk.length(), prProps, chProps, false, false);
rt.supplySlideShow(ppt);
PPFont font = new PPFont();
font.setFontName("Times New Roman");
int fontIndex = ppt.addFont(font);
rt.setFontIndex(fontIndex);
rt.setBold(true);
rt.setFontSize(24);
rt.setBullet(true);
//sum of chunk lengths must be text.length+1, add a dummy char to the end
styleAtom.addParagraphTextPropCollection(1);
styleAtom.addCharacterTextPropCollection(1);
String txt = text.toString();
textAtom.setText(txt);
shape.getTextRun().buildRichTextRuns(styleAtom.getParagraphStyles(), styleAtom.getCharacterStyles(), txt);
//end building rich text runs
shape.setAnchor(new Rectangle(100, 100, 300, 50));
slide.addShape(shape);
FileOutputStream out = new FileOutputStream("test.ppt");
ppt.write(out);
out.close();
}
}
おかげ
は、私が最初の行のための弾丸をたくないです
ありがとうございました:)それは期待通りに働いていますd :) – user3768904