htmlとwordの相互変換の実装(画像あり)
2022-02-18 22:10:35
バックエンドはspringbootとmaven、フロントエンドはリッチテキストエディタのckeditorを使用しています。現在、ワードをhtmlからdoc形式に変換し、画像処理対応はdocx形式なので、手動でdocをdocxとして保存し、画像置換を行う必要があります。
それは2021です、私は穴を埋めるために戻ってきた、と私はhtmlをワードに変換する必要がある別のシナリオに遭遇した、現在、可変形式で画像をエクスポートするために、次のソリューションがあります。
バックエンドはスタイリングの一部だけを行い、エクスポートはフロントエンドに任せます。コードの実装はパート4を参照してください。
I. mavenの依存関係を追加する
以下のpoi関連の依存関係を主に使用し、htmlの画像要素を取得しやすくするためにjsoupも使用します。
org.apache.poi
poi
3.14
org.apache.poi
poi-scratchpad
3.14
org.apache.poi
poi-ooxml
3.14
fr.opensagres.xdocreport
xdocreport
1.0.6
org.apache.poi
poi-ooxml-schemas
3.14
org.apache.poi
ooxml-schemas
1.3
org.jsoup
jsoup
1.11.3
public static String docToHtml() throws Exception {
File path = new File(ResourceUtils.getURL("classpath:").getPath());
String imagePathStr = path.getAbsolutePath() + "\\\static\\\image\\\";
String sourceFileName = path.getAbsolutePath() + "\\static\\\test.doc";
String targetFileName = path.getAbsolutePath() + "\\static\\test2.html";
File file = new File(imagePathStr);
if(!file.exists()) {
file.mkdirs();
}
HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(sourceFileName));
org.w3c.dom.Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(document);
// save the image and return the relative path of the image
wordToHtmlConverter.setPicturesManager((content, pictureType, name, width, height) -> {
try (FileOutputStream out = new FileOutputStream(imagePathStr + name)) {
out.write(content);
} catch (Exception e) {
e.printStackTrace();
}
return "image/" + name;
});
wordToHtmlConverter.processDocument(wordDocument);
org.w3c.dom.Document htmlDocument = wordToHtmlConverter.getDocument();
DOMSource domSource = new DOMSource(htmlDocument);
StreamResult streamResult = new StreamResult(new File(targetFileName));
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty(OutputKeys.METHOD, "html");
serializer.transform(domSource, streamResult);
return targetFileName;
}
関連
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
Javaジェネリックを1つの記事で
-
-bash: java: コマンドが見つからない 解決方法
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
javaの継承の基本的な実装
-
JSoupは、新バージョンの正方学務システム(イントラネット-学務システム)にログインし、情報処理の詳細をクロールするシミュレーションを行います。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
Javaでよくある構文エラー
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
API の戻り値を処理するために ResponseEntity を使用する
-
eclipse にリソースリーク:'in' が閉じない
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。