2016-08-23 10 views
7

Apache POI XSLFライブラリを使用してpptxファイルの背景色を設定しようとしています。私のコードは次のようになります。Apache POI XSLFを使用してFillColorを設定しようとするとIllegalStateExceptionが発生する

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) 

にもたらされる

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

私はSlideMasterの背景、レイアウトの背景、およびスライドの背景と同じエラーですべての結果にこれを呼び出して試してみました。

+2

6月6日以降にリリースされたPOIの最新バージョンで試してみてください。関連コードが頻繁に修正され、問題が既に解決されている可能性があります。 – centic

+0

ちょうど試しました。これはapache poi version 3.15を使用して動作します。 –

+1

ねえ、私はそれを修正しました...私は賞金を得ることができますか? ;) – kiwiwings

答えて

1

これは#59702POI 3.15-beta2に固定されました。

OOXmlプロパティまたはPOI実装またはxmlbeansスキーマの「問題」は、色などの類似の属性が異なるスキーマタイプの下に格納され、古いコードがその親ノードをカバーしていないことです。 パッチで代理人がこれらの相違をラップするようになり、XSLFのusermodelメソッドをより統一できるようになりました。

+0

ありがとうございます..古いバージョン(3.9)でそれを作る方法はありますか?上位バージョンには下位互換性がありません –

+0

私はパッチをバックポートしていません...想像できるので、 3.9に基づいて実装してください。私はいつも困惑しています。なぜなら、非常に多くのプロジェクトが最後のJDK 1.5リリースである3.10の代わりに3.9にとどまっているからです。どのような互換性の問題がありますか? ...これは本当にバグのように詳細にしてください。 – kiwiwings

+0

@kiwiwings:これを見てください:http://stackoverflow.com/questions/35097640/add-image-into-a-word-docx-document- header-using-poi-xwpf/35103749#35103749。これはapache poi 3.13まで機能していました。 3.14以来、少なくとも3.15の決勝まで、それはそれ以上働かない。理由:POIはヘッダー段落のイメージのためにblip referenceを保存しません。 –

関連する問題