ポイワードからHTMLへ

WBOY
リリース: 2023-05-15 21:08:06
オリジナル
1127 人が閲覧しました

インターネットの発展に伴い、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート