Apache POI HWPF
Microsoft Word バイナリ ドキュメントの処理
オープン ソース Java ライブラリを介して DOC ファイルを作成、読み取り、操作、変換します。
Apache POI HWPF は、Microsoft Word DOC ファイル形式の Apache POI ポートです。追加のライブラリを必要とせずに DOC ファイルを読み書きする機能を提供します。また、古い Word 6 および Word 95 ファイル形式の限定的な読み取り専用サポートも提供します。この段階では、HWPF は主に書式設定されたテキストに関係しています。基本的なテキスト抽出、特定のテキスト抽出、ヘッダーとフッターへのアクセス、およびテキスト機能の変更を提供します。
これにより、開発者は、段落の操作、テキストへのさまざまなスタイルの追加、表の追加、テキストの抽出などの機能を備えた MS-Word ドキュメントを簡単に作成できます。
Apache POI HWPF の概要
まず、システムに Java Development Kit (JDK) をインストールする必要があります。既にお持ちの場合は、Apache POI の ダウンロード ページに進み、最新の安定版リリースをアーカイブから入手してください。必要なライブラリーを Java プログラムにリンクできる任意のディレクトリーに ZIP ファイルの内容を抽出します。それだけです!
Maven ベースの Java プロジェクトで Apache POI を参照するのはさらに簡単です。必要なのは、pom.xml に次の依存関係を追加し、IDE が Apache POI Jar ファイルを取得して参照できるようにすることだけです。
Apache POI Maven の依存関係
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.0.0</version>
</dependency>
Java API を使用して Word 文書を作成および変更する
Apache POI HWPF を使用すると、プログラマは新しい Word ドキュメントを DOC ファイル形式で作成できます。 API を使用すると、開発者は必要に応じて既存の Word ドキュメントを変更することもできます。この API は、Word 文書への段落の追加、テキストの配置とフォント スタイルの適用などもサポートしています。
DOC ファイルの変更 - Java
// open an empty doc file, using APACHE POI we cannot create .doc file format from scratch
HWPFDocument doc = new HWPFDocument(new FileInputStream("empty.doc"));
Range range = doc.getRange();
// inset text
CharacterRun run = range.insertAfter("File Format Developer Guide - " +
"Learn about computer files that you come across in " +
"your daily work at: www.fileformat.com ");
OutputStream out = new FileOutputStream("document.pdf");
// save document
doc.write(out);
out.close();
Java を使用して Word 文書を他の形式に変換する
pache POI HWPF を使用すると、ソフトウェア開発者は Microsoft Word 文書をサポートされている任意のファイル形式に簡単に変換できます。現時点では、Java 開発者は Word ドキュメントを HTML、FO、およびテキスト形式に変換できます。 org.apache.poi.hwpf.converter パッケージには、Word から HTML および Word から FO へのコンバーターが含まれています。
DOC を HTML に変換する
// load document
HWPFDocumentCore wordDocument = WordToHtmlUtils.loadDoc(new FileInputStream("document.doc"));
Document newDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
// initialize WordToHtmlConverter
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(newDocument );
// process document
wordToHtmlConverter.processDocument( wordDocument );
StringWriter stringWriter = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
transformer.setOutputProperty( OutputKeys.ENCODING, "utf-8" );
transformer.setOutputProperty( OutputKeys.METHOD, "html" );
transformer.transform(
new DOMSource( wordToHtmlConverter.getDocument() ),
new StreamResult( stringWriter ) );
// get html
String html = stringWriter.toString();
DOC ファイルからテキストを読み取る
Apache POI HWPF は、Microsoft Word DOC ファイル形式からテキストを読み取るための WordExtractor クラスを提供します。数行のコードだけで、ファイルからテキストを抽出できます。
DOC ファイルからテキストを抽出する
// load DOC file
FileInputStream fis = new FileInputStream(new File("document.doc"));
// open file
HWPFDocument doc = new HWPFDocument(fis);
// read text
WordExtractor extractor = new WordExtractor(doc);
// display text
System.out.println(extractor.getText());
カスタム ヘッダーとフッターを DOC に追加する
Apache POI HWPF を使用すると、Java 開発者は Word ドキュメント内にカスタム ヘッダーとフッターを作成できます。 Apache POI HWPF は「適度に機能する」と説明されています。基本的なテキスト抽出、特定のテキスト抽出、ヘッダーとフッターへのアクセス、およびテキスト機能の変更をサポートします。 getText() メソッドを使用してすべての段落からテキストを取得するか、getParagraphText() を使用して各段落から順番にテキストを取得できます。
Word DOC ファイルでカスタム ヘッダーとフッターを管理する
// The path to the documents directory.
String dataDir = Utils.getDataDir(ApacheHeaders.class);
POIFSFileSystem fs = null;
fs = new POIFSFileSystem(new FileInputStream(dataDir + "MyHeader.doc"));
HWPFDocument doc = new HWPFDocument(fs);
int pageNumber = 1;
HeaderStories headerStore = new HeaderStories(doc);
String header = headerStore.getHeader(pageNumber);
System.out.println("Header Is: " + header);