XWPF

2016-05-04 8 views
0

でのApache POIにこの質問を使用してJavaで単語のサムネイルを取得すると、お得な情報:XWPF

get thumbnail of word in java using Apache POI

私はXWPFでこれを行うにしたい - のためのApache POIのAPI word xmlドキュメント(.docx)。 getThumbnail()メソッドなどはありません。これどうやってするの? "名前を付けて保存..."ダイアログの "サムネイル生成"オプションを使用して、Wordで生成された埋め込みサムネイルを抽出します。これはHWPFの.docドキュメントで正常に動作します。

答えて

0

特にOpen Packaging Conventionsについて鋭意研究した結果、私は自分で答えを見つけました。 XWPF Document APIには、 "getThumbnai()"という便利なメソッドはありません。サムネイルは、特定のパッケージ関係で抽出する必要があります。

XWPFDocument wordDocument = new XWPFDocument(new FileInputStream(docxFile)); 

ArrayList<PackagePart> packageParts= wordDocument.getPackage().getPartsByRelationshipType 
("http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail"); 

PackagePart packagePart = packageParts.get(0); 
FileOutputStream fos = new FileOutputStream("c:\\temp\\thumb.emf"); 
IOUtils.copy(packagePart.getInputStream(), fos); 
+1

ありがとうございました!私は[POI強化リクエストを提出しました](https://bz.apache.org/bugzilla/show_bug.cgi?id=59717)。これを完全な修正として提供するチャンスがあれば素晴らしいだろう! – Gagravarr

+0

この機能強化リクエストは終了しました。サムネイルヘルパーメソッドはhttp://poi.apache.org/changes.html#3.15-beta2に含まれています。 –

0

Apache POIのバージョンをアップグレードする必要があります。あなたがそれらの新しいバージョンではApache POI 3.15 beta 2 or newer

を使用する必要がある、あなたは」XWPFで、ファイルにサムネイル画像を保存するには、このようなgetThumbnailFilename()

getThumbnailImage()としてPOIXMLPropertiesには、いくつかのサムネール関連メソッドを、見つけることができますdのような何か:

XWPFDocument wordDocument = new XWPFDocument(new FileInputStream(docxFile)); 
POIXMLProperties props = workDocument.getProperties(); 

String thumbnail = props.getThumbnailFilename(); 
if (thumbnail == null) { 
    // No thumbnail 
} else { 
    FileOutputStream fos = new FileOutputStream("c:\\temp\\"+thumbnail); 
    IOUtils.copy(props.getThumbnailImage(), fos); 
} 
+0

ありがとうございます - Apache POIのこの改善はこのリクエストのためになされました;-)(https://bz.apache.org/bugzilla/show_bug.cgi?id=59717を参照) –

+1

私はこのバグをよく承知しています、私はサポートを追加した人です.... :) – Gagravarr