ポイワードからHTMLへ

May 15, 2023 pm 09:08 PM

インターネットの発展に伴い、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 形式に変換できます。具体的な実装手順は次のとおりです。

  1. 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>&emsp;</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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? Mar 19, 2025 pm 03:58 PM

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

怠zyなロードの概念を説明してください。 怠zyなロードの概念を説明してください。 Mar 13, 2025 pm 07:47 PM

怠zyなロードの概念を説明してください。

JavaScriptでカリーはどのように機能し、その利点は何ですか? JavaScriptでカリーはどのように機能し、その利点は何ですか? Mar 18, 2025 pm 01:45 PM

JavaScriptでカリーはどのように機能し、その利点は何ですか?

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

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

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? Mar 19, 2025 pm 03:59 PM

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

React和解アルゴリズムはどのように機能しますか? React和解アルゴリズムはどのように機能しますか? Mar 18, 2025 pm 01:58 PM

React和解アルゴリズムはどのように機能しますか?

イベントハンドラーのデフォルトの動作をどのように防止しますか? イベントハンドラーのデフォルトの動作をどのように防止しますか? Mar 19, 2025 pm 04:10 PM

イベントハンドラーのデフォルトの動作をどのように防止しますか?

制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか? 制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか? Mar 19, 2025 pm 04:16 PM

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

See all articles