1. ホーム
  2. Java

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; }