検索

1. 依存パッケージとデプロイメント環境

2. バックエンド コードの実装

import com.jacob.activeX.ActiveXComponent;import com.jacob.com.Dispatch;import com.jacob.com.Variant;/**	 *	 * <p>【导入word文件,解析word文件转换成HTML】</p>	 * <p>条件:</p>	 * <p>备注:</p>	 * <p>例子:</p>	 * <p>日志:</p>	 *	 * @author:zhu  [2016年1月29日 下午2:50:28]	 */	public void importDocToHtml() {		//启动word		ActiveXComponent axc = new ActiveXComponent("Word.Application");		StringWriter stringWriter = null;		try {			// doc临时存放文件夹路径			String realpath = ServletActionContext.getServletContext().getRealPath("/UserUploadFile/WordToHTML");			File tempfile = null;			if (docFile != null) {				String tempName = String.valueOf((new Date()).getTime());				tempfile = new File(new File(realpath), tempName + ".doc");				//判断文件是否存在				if (!tempfile.getParentFile().exists()) {					//创建文件					tempfile.getParentFile().mkdirs();				}				//copy文件的创建的文件上				FileUtils.copyFile(docFile, tempfile);				//设置word不可见				axc.setProperty("Visible", new Variant(false));				Dispatch docs = axc.getProperty("Documents").toDispatch();				//打开word文档				Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method,						new Object[] { docFile.getPath(), new Variant(false), new Variant(true) }, new int[1])						.toDispatch();				String htmlUrl = tempfile.getPath().substring(0, tempfile.getPath().lastIndexOf(".") + 1) + "html";				//作为html格式保存到临时文件				Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { htmlUrl, new Variant(8) }, new int[1]);				Variant f = new Variant(false);				Dispatch.call(doc, "Close", f);				//删除文件				//FileUtils.forceDelete(tempfile);				File file = new File(htmlUrl);				//读取需要注意编码				InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "gb2312");				BufferedReader br = new BufferedReader(isr);				String s = null;				StringBuffer html = new StringBuffer();				while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行					html.append(s);				}				br.close();				Map<String, Object> result = new HashMap<String, Object>();				//因为一次读一行的原因,可以标签和属性之间没间隔,所以需要格式化				result.put("html", formatHTML(html.toString(), tempName));				// 操作成功的话,将文档id返回				Struts2Utils.outJSON(result);			}		} catch (Exception e) {			setErrMessage("导入Excel数据错误,请检查数据!");		} finally {			axc.invoke("Quit", new Variant[] {});		}	}	/**	 * 	 * <p>【对当前html进行处理】</p>	 * <p>条件:</p>	 * <p>备注:如果有图片会在html同目录下生成一个存放图片的文件夹</p>	 * <p>例子:</p>	 * <p>日志:</p>	 *	 * @param html			html的内容	 * @param htmlName		html文件名	 * @return	 * @author:zhu  [2016年2月3日 下午5:01:36]	 */	private String formatHTML(String html, String htmlName) {		//对src进行处理,可能和标签链接紧密		html = html.replaceAll("src", "\t src");		org.jsoup.nodes.Document doc = Jsoup.parse(html);		//只需要body内的html代码,style不要,如果html在转成doc会出现问题		Element body = doc.body();		//对style进行处理,可能和标签链接紧密		body = body.html(body.html().replaceAll("style", "\t style").replaceAll("lang", "\t lang"));		//span标签的lang 有些情况下双引号会把style包掉,特殊处理下,不处理也没关系,没发现样式乱的情况		/*Elements spans = body.getElementsByTag("span");		for (Element ele : spans) {			String span = ele.attr("lang");			if (!span.isEmpty()) {				if (span.length() > 5) {					ele.removeAttr("lang");					ele.attr("style", span.substring(span.indexOf("\'"), span.lastIndexOf("\'")));				} else {					ele.removeAttr("lang");				}			}		}		*/		String bodyContent = body.html();		//图片需要真是的路径		bodyContent = bodyContent.replaceAll(htmlName, "../../UserUploadFile/WordToHTML/" + htmlName);		return bodyContent;	}

3フロントエンドの実装

フロントエンドの主な機能は、HTML コードをアップロードして取得し、エディターに直接割り当てることです。

コアコードをアップロードするには、uploadify を使用します

$(function() {		$("#fileUp").uploadify({			swf				: '${request.contextPath}/resources/uploadify/uploadify.swf', 			uploader		: 'hdAction!importDocToHtml.shtml',							// 用于接收上传文件的action			auto			: true,									// 是否自动开始 上传			buttonText		: '导入Word', 							// 按钮上的文字 			debug			: false,								// 是否调试状态			fileObjName		: 'docFile',							// action中的文件对象名	 		fileSizeLimit	: (100*1024*1024), 						// 设置单个文件大小限制,单位为byte。设置为100m			fileTypeDesc	: '支持格式:*.doc', 				// 如果配置了以下的'fileExt'属性,那么这个属性是必须的  	 		fileTypeExts	: '*.doc',								// 允许的格式,如:*.jpg;*.gif;*.jpeg;*.png;*.bmp			method          : 'post',								// 上传数据的方法			multi			: true,									// 是否支持多文件上传 			onUploadSuccess : function(file, data, response) {				var result=$.parseJSON(data);				//eWebEditor编辑器赋值				$("#eWebEditor1").contents().find("body").find("#eWebEditor").contents().find("body").html(result.html);			},			onError: function(event, queueID, fileObj) {				alert("文件:" + fileObj.name + "上传失败!");  			},					onUploadError : function(file,errorCode,errorMsg,errorString,swfuploadifyQueue) {// 上传文件出错是触发(每个出错文件触发一次)				alert( '上传文件出错,id: ' + file.id						+ ' \r\n- 索引: ' + file.index						+ ' \r\n- 文件名: ' + file.name						+ ' \r\n- 文件大小: ' + file.size						+ ' \r\n- 类型: ' + file.type						+ ' \r\n- 创建日期: ' + file.creationdate						+ ' \r\n- 修改日期: ' + file.modificationdate						+ ' \r\n- 文件状态: ' + file.filestatus						+ ' \r\n- 错误代码: ' + errorCode						+ ' \r\n- 错误描述: ' + errorMsg						+ ' \r\n- 简要错误描述: ' + errorString						+ ' \r\n- 出错的文件数: ' + swfuploadifyQueue.filesErrored						+ ' \r\n- 错误信息: ' + swfuploadifyQueue.errorMsg						+ ' \r\n- 要添加至队列的数量: ' + swfuploadifyQueue.filesSelected						+ ' \r\n- 添加至对立的数量: ' + swfuploadifyQueue.filesQueued						+ ' \r\n- 队列长度: ' + swfuploadifyQueue.queueLength);			},			onCancel: function(event, queueID, fileObj){  				//alert("取消了" + fileObj.name);  			}		});		})
<tr>    	<th></th>    	<td><input type='file' id='fileUp' name='fileUp' /></td>  </tr>


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

HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

HTML、CSS、およびJavaScriptの理解:初心者向けガイドHTML、CSS、およびJavaScriptの理解:初心者向けガイドApr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

htmlisaspecifictypeofcodefocuseduructuringwebcontent

HTML、CSS、およびJavaScript:Web開発者に不可欠なツールHTML、CSS、およびJavaScript:Web開発者に不可欠なツールApr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

HTML、CSS、およびJavaScriptの役割:コアの責任HTML、CSS、およびJavaScriptの役割:コアの責任Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLは初心者のために簡単に学ぶことができますか?HTMLは初心者のために簡単に学ぶことができますか?Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLでの開始タグの例は何ですか?HTMLでの開始タグの例は何ですか?Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。