ポイワードからHTMLへ
インターネットの発展に伴い、HTML は最も一般的な Web ページ作成言語となり、Word は最も人気のあるオフィス ソフトウェアの 1 つであり、Word で作成されたドキュメントはあらゆる分野で広く使用されています。したがって、Word 文書を HTML 形式に変換すると、インターネット上でより適切に公開できるようになります。この記事では、POI ライブラリに基づいて Word を HTML に変換する方法を紹介します。
1. POI ライブラリの概要
Apache POI は、Microsoft Office バイナリ形式ファイルを読み書きするための Java API です。 POI は、.doc、.docx、.ppt、.pptx、.xls、および .xlsx 形式のファイルを処理するための一連の標準 API を提供します。 POI の最新バージョンは 4.1.2 で、Office 97 ~ 2003、Office 2007 ~ 2013、Office 2016 など、Office ドキュメント形式のすべてのバージョンをサポートしています。
2. POI を使用して Word を HTML に変換する
POI ライブラリに基づいて、Word のテキスト、表、画像、ハイパーリンク、スタイルを HTML 形式に変換できます。具体的な実装手順は次のとおりです。
- Word ドキュメントのロード
まず、Word ドキュメントをロードする必要があります。 POI は、.docx 形式の Word ドキュメントをロードするための XWPFDocument クラスと、古い形式の .doc ドキュメントをロードするための HWPFDocument クラスを提供します。
たとえば、次のコードは、「test.docx」という名前の Word ドキュメントを読み込むために使用されます:
FileInputStream fis = new FileInputStream(new File("test.docx")); XWPFDocument document = new XWPFDocument(fis);
2. テキストとスタイルを抽出します
次に、次のことを行う必要があります。 HTML の生成時に文書の構造とスタイルをより適切に表現するために、HTML 内の Word 文書の段落、テキスト、およびスタイルを調べます。
最初のステップは、各段落を確認することです。段落ごとに、フォント、色、太字などのスタイル プロパティを抽出する必要があります。段落内のテキストを抽出する必要もあります。
List<XWPFParagraph> paragraphs = document.getParagraphs(); for (XWPFParagraph para : paragraphs) { String text = para.getParagraphText(); // 提取样式属性 CTPPr ppr = para.getCTP().getPPr(); // ... }
3. テキスト コンテンツの処理
Word 文書内のテキスト コンテンツを HTML 形式に変換して出力する必要があります。テキストの各部分について、タグや太字、斜体、下線などのスタイルを使用して表現できます。
さらに、Word 文書にはスペース、タブ、改行などの特殊文字が存在することがあります。これらの特殊文字を HTML 内の対応するタグに変換する必要があります。
StringBuilder sb = new StringBuilder(); for (XWPFRun run : runs) { String text = run.getText(0); if(text != null) { // 转换特殊字符 text = text.replace(" ", "<span> </span>"); text = text.replace(" ", "<span> </span>"); text = text.replace(" ", "<br>"); // 将文本转换为HTML String style = getStyle(run); sb.append("<span ").append(style).append(">").append(text).append("</span>"); } } String content = sb.toString();
4. 画像とハイパーリンクの処理
テキストを処理した後、Word 文書内の画像とハイパーリンクを処理する必要があります。 POI は、画像とハイパーリンクを処理するための XWPFRun クラスを提供します。
画像の場合は、まずバイナリ データを抽出し、HTML の対応するタグに書き込むことができます。
List<XWPFPicture> pictures = run.getEmbeddedPictures(); for (XWPFPicture pic : pictures) { try { byte[] data = pic.getPictureData().getData(); String ext = pic.getPictureData().suggestFileExtension(); String filename = UUID.randomUUID().toString() + "." + ext; // 将图片转换为HTML格式 String imgHtml = "<img src="" + filename + "" />"; // 写入文件 FileOutputStream fos = new FileOutputStream(new File(outputDir, filename)); fos.write(data); fos.close(); } catch (IOException e) { e.printStackTrace(); } }
ハイパーリンクの場合は、そのアドレスとテキストを抽出して書き込む必要があります。 HTML の対応するタグに追加します:
CTHyperlink hyperlink = run.getCTR().getHyperlinkArray(0); if (hyperlink != null) { String url = hyperlink.getRArray(0).getT(); String text = content.substring(start, end); String linkHtml = "<a href="" + url + "">" + text + "</a>"; content = content.substring(0, start) + linkHtml + content.substring(end); }
5. 出力 HTML ファイル
最後に、生成された HTML テキストを .HTML ファイルに書き込み、ファイルは指定されたディレクトリに保存されます:
File outputDir = new File("output"); if (!outputDir.exists()) { outputDir.mkdirs(); } FileOutputStream htmlFile = new FileOutputStream(new File(outputDir, "test.html")); String html = "<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>" + content + "</body></html>"; htmlFile.write(html.getBytes("UTF-8")); htmlFile.close();
3. 概要
この記事では、POI ライブラリに基づいて Word を HTML に変換する方法を紹介します。この方法では、Word 文書内のテキストと表、画像、ハイパーリンク、スタイル、その他のコンテンツを変換できます。 HTML形式に変換され、指定したディレクトリにHTMLファイルとして出力されます。この方法は、電子書籍、論文、技術文書などの Word 文書をインターネットに公開する必要があるシナリオに適しています。
以上がポイワードからHTMLへの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











UseEffectとは何ですか?副作用を実行するためにどのように使用しますか?

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか?

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか?

制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか?
