2016-08-23 64 views
7

我想使用Apache POI XSLF庫設置pptx文件的背景填充顏色。我的代碼如下所示:嘗試使用Apache POI設置setFillColor時出現IllegalStateException XSLF

XSLFSlideMaster defaultMaster = ppt.getSlideMasters().get(0); 
XSLFSlideLayout layout = defaultMaster.getLayout(SlideLayout.BLANK); 
XSLFBackground background = layout.getBackground(); 
background.setFillColor(Color.BLACK); 

導致

Exception in thread "main" java.lang.IllegalStateException: CTShapeProperties was not found. 
at org.apache.poi.xslf.usermodel.XSLFShape.getSpPr(XSLFShape.java:240) 
at org.apache.poi.xslf.usermodel.XSLFSimpleShape.setFillColor(XSLFSimpleShape.java:549) 

我已經打過電話本上SlideMaster的背景下,佈局的背景,幻燈片的背景,都會導致同樣的錯誤。

+2

請嘗試使用POI的最新版本,至少一個是在6月6日後發佈的,因爲相關代碼被重新編制了很多次,因此您的問題可能已被解決。 – centic

+0

剛試過。它使用apache poi版本3.15。 –

+1

嘿,我修好了......我可以得到賞金嗎? ;) – kiwiwings

回答

1

這是通過#59702固定在POI 3.15-beta2

OOXml屬性或POI實現或xmlbeans模式的「問題」是類似於顏色的屬性存儲在不同的模式類型下,而舊的代碼並未覆蓋該父節點。 該修補程序引入委託來包裝這些差異,現在XSLF用戶模型方法可以更加統一。

+0

感謝kiwings ..有沒有什麼辦法讓它在舊版本(3.9)?因爲更高的版本沒有一些向後兼容 –

+0

我沒有backporting任何補丁...所以我可以想象,這是可能的基於3.9實現它。因爲我總是很困惑爲什麼有這麼多的項目會保持在3.9 - 而不是最後一個jdk 1.5版本的3.10--你會遇到什麼兼容性問題? ...請詳細說明,因爲這真的讓我很沮喪 – kiwiwings

+0

@kiwiwings:看看這個例子:http://stackoverflow.com/questions/35097640/add-image-into-a-word-docx-document-標題運用-POI-xwpf/35103749#35103749。這一直工作,直到apache poi 3.13。從3.14開始,至少在3.15決賽之前,它沒有更多。原因:POI不會再爲頭段落中的圖片保存blip參考。 –

相關問題