IEの下でJavaScriptでHTMLをWord、Pdfにエクスポートする.

5704 ワード

最近、社内システムの文章機能をアップグレードしました.文章の内容をhtml、ワード、pdfとすることに関連して、システムはIEの環境で多く使われています.そして、会社のコンピュータはofficeをプリインストールしていますので、クライアントを一時的に採用する方式をエクスポートします.
ページの基本構造:

	
		       
		
			function exportHtml {
			
			}
			
			function exportWord() {
			
			}
			
			function exportPdf() {
			
			}
		
	
	
		
		

を複製してブラウザ内で効果を見ることができます.私達の目標はcontent内の内容をそれぞれhtml、word、pdfファイルに導き出すことです.content内の内容は非常に複雑かもしれません.スタイルは非常に多く、ラベルが標準ではないかもしれません.非対称です.そして、中国語があります.
ファイルをエクスポートするには、エクスポートディレクトリを選択する必要がありますが、どうやってウィンドウをイジェクトしてディレクトリを選択しますか?
function getExportPath() {
	var shell = new ActiveXObject("Shell.Application");
	var folder = shell.BrowseForFolder(0, '       ', 0x0040, 0x11); 
	var filePath;
	if(folder != null) {
		 filePath = folder.Items().Item().Path;
	}
	return filePath;
}
上のコードを有効にするには、IEブラウザの設定が必要です.
設定が終わったら、直接ブラウザで実行しても、権限がないという問題があります.これをサーバーに展開して、現在のサーバのアクセスアドレスを信頼できるサイトに設定してください.
エクスポートHTML:
function exportHtml {
	var filePath = getExportPath();
	if(filePath != null) {
		var file;
		try {
			var fso = new ActiveXObject("Scripting.FileSystemObject");  
			file = fso.createtextfile("    .html",true);//     
			file.WriteLine(content.innerHTML);//     
			alert("    ");
		} catch (e) {
			alert("    ");
		} finally {
			if(file != null) 
				file.close();//     
		}
	}
}
はWORDをエクスポートします.
function exportWord() {
	var filePath = getExportPath();
	if(filePath != null) {
		try {
			var word = new ActiveXObject("Word.Application");
			var doc = word.Documents.Add("", 0, 1);
			var range = doc.Range(0, 1);
			var sel = document.body.createTextRange();
			try {
				sel.moveToElementText(content);
			} catch (notE) {
				alert("      ,        。");
				window.close();
				return;
			}
			sel.select();
			sel.execCommand("Copy");
			range.Paste();
			//word.Application.Visible = true;//   word      
			doc.saveAs("    .doc");//   
			alert("    ");
		} catch (e) {
			alert("      ,         Microsoft Office Word(    ),           ,   IE   ActiveX  。");
		} finally {
			try {word.quit();//   word  } catch (ex) {}
		}
	}
}
はPDFを導出する.
var filePath = getExportPath();
	if(filePath != null) {
		try {
			var word = new ActiveXObject("Word.Application");
			var doc = word.Documents.Add("", 0, 1);
			var range = doc.Range(0, 1);
			var sel = document.body.createTextRange();
			try {
				sel.moveToElementText(content);
			} catch (notE) {
				alert("      ,        。");
				window.close();
				return;
			}
			sel.select();
			sel.execCommand("Copy");
			range.Paste();
			//word.Application.Visible = true;//   word      
			doc.saveAs("    .pdf", 17);//    pdf  
			alert("    ");
		} catch (e) {
			alert("      ,         Microsoft Office Word 2007    ,           ,   IE   ActiveX  。");
		} finally {
			try {word.quit();//   word  } catch (ex) {}
		}
	}
はPDFを導出して、一連のパラメータを廃棄しました.ここでは前の二つだけ使って、最初のパラメータはファイル名を保存します.二つ目のパラメータはファイル形式を保存します.office 2007または2010は現在のワードをPDF形式に保存します.二つ目のパラメータはVBまたはC環境下の列挙類WdSaveFormtの値です.やっと各変数の対応値を調べました.
Name
Value
Description
wdFormatDcument
0
Microsoft Office Word 97-2003 binary file format.
wdFormat DOSText
4
Microsoft DOS text format.
wdFormat DOSText Line Breaks
5
Microsoft DOS text with line breaks preserved.
wdFormat EncodedText
7
Enccoded text format.
wdFormatFilteredHTML
10
Filtered HTML format.
wdFormatFlatXML
19
Open XML file format saved as a single XML file.
wdFormatFlatXML
20
Open XML file format with macros enabled saved as a single XML file.
wdFormatFlatXMLtmaplate
21
Open XML template format saved as a XML single file.
wdFormatFlatXMLtmlpleMacroEnabled
22
Open XML template format with macros enabled saved as a single XML file.
wdFormatO pen Document Text
23
OpenDcument Text format.
wdFormatHTML
8
Standard HTML format.
wdFormat
6
Rich text format(RTF)
wdFormat StrictOpenXMLDocument
24
Strict Open XML document format.
wdFormatTemplate
1
Word template format.
wdFormatText
2
Microsoft Windows text format.
wdFormatTextLink Breaks
3
Windows text format with line breaks preserved.
wdFormat UnicaodeText
7
Unicode text format.
wdFormat WebArchive
9
Web archive format.
wdFormatXML
11
Extenseble Markp Language(XML)format.
wdFormatDcument 97
0
Microsoft Word 97 document format.
wdFormatDcument Default
16
Word default document file format.For Word 2010,this is the DOCX format.
wdFormatPDF
17
PDFフォーマット.
wdFormatTemplate 97
1
ワード97 template format.
wdFormatXMLDocument
12
XML document format.
wdFormatXMLDocument MaroEnabled
13
XML document format with macros enabled.
wdFormatXMLtmaplate
14
XML template format.
wdFormatXMLtmlpleMacroEnabled
15
XML template format with macros enabled.
wdFormat XPS
18
XPS format.
クライアントを使用した導出方式の利点と欠点は明らかである.
特典:そのままエクスポートします.コードは簡単です.デザインが複雑なHTMLのために心配を導き出さなくてもいいです.
欠点:クライアントに依存して、IEでのみ使用できます.ブラウザのセキュリティが低下します.
はい、とりあえずこんなに書きます.おやすみなさい.