Ⅰ word文檔在html頁面展示的幾種解決方案
1、實現富文本中樣式代碼的分離;
2、保留CSS樣式;
其實以上兩個步驟是相互矛盾的處理過程,無法通過Jacob或POI組件加正則表達式過濾解決,於是進行了以下步驟的實驗:
1、首先創建了一個空白word文檔,格式(office 2003格式或office 2007格式)不限;
2、將word格式保存為html格式,通過Edit Plus打開,發現代碼中使用了office的命名空間,同時使用了office命名空間的標簽定義了CSS樣式,自己測試了一下,將生成的html文件頭和尾拷貝出來:代碼如下:
以上HTML頭是office的命名空間定義。
3、將使用富文本代碼粘貼到紅色標識的<!-- 富文本代碼區 -->中,並以doc或docx格式保存文件;
4、大功告成,打開文件時,Word將會以「Web版視圖」完美顯示了富文本樣式,成功解決了富文本代碼中樣式代碼,並同時保留了格式;
目前研究的僅能保存文字,未處理有圖片的代碼,朋友們可以再研究一下帶圖片的富文本代碼的轉換;
Ⅱ php 怎麼實現讀取word文檔內容,顯示到html上面能給個案例最好了,謝謝!
如果在win可以用com組件讀取:
// 建立一個指向新COM組件的索引
$word = new COM("word.application") or die("Can't start Word!");
// 顯示目前正在使用的Word的版本號
//echo "Loading Word, v. {$word->Version}<br>";
// 把它的可見性設置為0(假),如果要使它在最前端打開,使用1(真)
// to open the application in the forefront, use 1 (true)
//$word->Visible = 0;
//打?一個文檔
$word->Documents->OPen("d:a.doc");
//讀取文檔內容
$test= $word->ActiveDocument->content->Text;
echo $test;
echo "<br>";
//將文檔中需要換的變數更換一下
$test=str_replace("<{變數}>","這是變數",$test);
echo $test;
$word->Documents->Add();
// 在新文檔中添加文字
$word->Selection->TypeText("$test");
//把文檔保存在目錄中
$word->Documents[1]->SaveAs("d:/myweb/comtest.doc");
// 關閉與COM組件之間的連接
$word->Quit();
linux可用antiword插件去實現
Ⅲ 怎麼在html中顯示word
接分,來順便貢獻點想法。
第一自,用IE 打開word,滑鼠右鍵點 doc 文件,選 open with,選IE。
第二, <a href="a.doc" target="_blank">open a.doc </a> 這樣也是在IE 里打開word。
下面是我用的幾種方法
<script language="javascript">
function openmydoc(){
var doc=new ActiveXObject("Word.Application");
doc.visible=true;
doc.Documents.Open("jsp學習筆記.doc");
}
</script>
</head>
<body>
<input type="button" value="ok" name="b1" onclick="openmydoc()" />
<a href="jsp學習筆記.doc" type="application/ms-word">打開word </a>
<a href="worddocument.doc" target=_blank>clickme </a>
Ⅳ 有沒有辦法讓HTML5 canvas顯示/預覽word/excel/powerpoint 文檔
目前找到的幾種方式:
1.像以前的網路文庫那樣,先轉換成flash,然後放在網頁上。
說明:使用軟體OpenOffice/LibreOffice,swftools。
優點:在國內,由於Flash安裝量很大,而且很多人用IE和Chrome內核的瀏覽器,所以是可以查看的。
缺點:OpenOffice/LibreOffice轉換的結果可能會丟失格式/排版(我沒試過所以不知道會不會),而且比較耗伺服器資源,如果瀏覽器沒裝Flash就沒法查看文檔了,尤其是移動端。
2.轉換成PDF,然後用Mozilla的pdf.js查看。
說明:轉換成PDF的方法可以用OpenOffice/LibreOffice,也可以用七牛的第三方服務「文檔轉換」(由億方雲提供)。
優點:如果是把文件存放在七牛雲,用在線的服務會比較有保障,載入速度也快。
缺點:收費,不過費用很低廉,pdf.js可能比較大,載入相對慢點,放到七牛上面會好些,對移動端支持不好。
3.轉換成HTML,像現在的網路文庫那樣。
說明:使用PHPOffice和PDFtoHTML將文檔轉換成HTML直接在瀏覽器輸出,類似現在的網路文庫。
優點:瀏覽器無需安裝任何插件,也不用擔心兼容性問題,還支持移動端。
缺點:可能會丟失格式,而且用戶可以直接拷貝文檔內容,如果是扣積分下載的話,可能達不到目的。
Ⅳ HTML 頁面直接顯示word內容
辦法很多
通過poi
把word轉成pdf。
如果是windows平台
可以通過Jacob把word轉成html
還有利用
adobe公司
提供的組件
FlashPaper
,把word轉換成flash文件
網路的解決方案就是最後這一種
Ⅵ JAVA+JS如何在HTML頁面上顯示WORD文檔內容ActiveX只能兼容IE不考慮!
package com.cectsims.util;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
/**
* doc docx格式轉換
*/
public class DocConverter {
private static final int environment = 1;// 環境 1:windows 2:linux
private String fileString;// (只涉及pdf2swf路徑問題)
private String outputPath = "";// 輸入路徑 ,如果不設置就輸出在默認的位置
private String fileName;
private File pdfFile;
private File swfFile;
private File docFile;
public DocConverter(String fileString) {
ini(fileString);
}
/**
* 重新設置file
*
* @param fileString
*/
public void setFile(String fileString) {
ini(fileString);
}
/**
* 初始化
*
* @param fileString
*/
private void ini(String fileString) {
this.fileString = fileString;
fileName = fileString.substring(0, fileString.lastIndexOf("."));
docFile = new File(fileString);
pdfFile = new File(fileName + ".pdf");
swfFile = new File(fileName + ".swf");
}
/**
* 轉為PDF
*
* @param file
*/
private void doc2pdf() throws Exception {
if (docFile.exists()) {
if (!pdfFile.exists()) {
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
try {
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(docFile, pdfFile);
// close the connection
connection.disconnect();
System.out.println("****pdf轉換成功,PDF輸出:" + pdfFile.getPath()+ "****");
} catch (java.net.ConnectException e) {
e.printStackTrace();
System.out.println("****swf轉換器異常,openoffice服務未啟動!****");
throw e;
} catch (com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e) {
e.printStackTrace();
System.out.println("****swf轉換器異常,讀取轉換文件失敗****");
throw e;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
} else {
System.out.println("****已經轉換為pdf,不需要再進行轉化****");
}
} else {
System.out.println("****swf轉換器異常,需要轉換的文檔不存在,無法轉換****");
}
}
/**
* 轉換成 swf
*/
@SuppressWarnings("unused")
private void pdf2swf() throws Exception {
Runtime r = Runtime.getRuntime();
if (!swfFile.exists()) {
if (pdfFile.exists()) {
if (environment == 1) {// windows環境處理
try {
// Process p = r.exec("D:/Program Files/SWFTools/pdf2swf.exe "+ pdfFile.getPath() + " -o "+ swfFile.getPath() + " -T 9");
Process p = r.exec("C:/Program Files (x86)/SWFTools/pdf2swf.exe "+ pdfFile.getPath() + " -o "+ swfFile.getPath() + " -T 9");
System.out.print(loadStream(p.getInputStream()));
System.err.print(loadStream(p.getErrorStream()));
System.out.print(loadStream(p.getInputStream()));
System.err.println("****swf轉換成功,文件輸出:"
+ swfFile.getPath() + "****");
if (pdfFile.exists()) {
pdfFile.delete();
}
} catch (IOException e) {
e.printStackTrace();
throw e;
}
} else if (environment == 2) {// linux環境處理
try {
Process p = r.exec("pdf2swf " + pdfFile.getPath()
+ " -o " + swfFile.getPath() + " -T 9");
System.out.print(loadStream(p.getInputStream()));
System.err.print(loadStream(p.getErrorStream()));
System.err.println("****swf轉換成功,文件輸出:"
+ swfFile.getPath() + "****");
if (pdfFile.exists()) {
pdfFile.delete();
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
} else {
System.out.println("****pdf不存在,無法轉換****");
}
} else {
System.out.println("****swf已經存在不需要轉換****");
}
}
static String loadStream(InputStream in) throws IOException {
int ptr = 0;
in = new BufferedInputStream(in);
StringBuffer buffer = new StringBuffer();
while ((ptr = in.read()) != -1) {
buffer.append((char) ptr);
}
return buffer.toString();
}
/**
* 轉換主方法
*/
@SuppressWarnings("unused")
public boolean conver() {
if (swfFile.exists()) {
System.out.println("****swf轉換器開始工作,該文件已經轉換為swf****");
return true;
}
if (environment == 1) {
System.out.println("****swf轉換器開始工作,當前設置運行環境windows****");
} else {
System.out.println("****swf轉換器開始工作,當前設置運行環境linux****");
}
try {
doc2pdf();
pdf2swf();
} catch (Exception e) {
e.printStackTrace();
return false;
}
if (swfFile.exists()) {
return true;
} else {
return false;
}
}
/**
* 返迴文件路徑
*
* @param s
*/
public String getswfPath() {
if (swfFile.exists()) {
String tempString = swfFile.getPath();
tempString = tempString.replaceAll("\\\\", "/");
return tempString;
} else {
return "";
}
}
/**
* 設置輸出路徑
*/
public void setOutputPath(String outputPath) {
this.outputPath = outputPath;
if (!outputPath.equals("")) {
String realName = fileName.substring(fileName.lastIndexOf("/"),
fileName.lastIndexOf("."));
if (outputPath.charAt(outputPath.length()) == '/') {
swfFile = new File(outputPath + realName + ".swf");
} else {
swfFile = new File(outputPath + realName + ".swf");
}
}
}
}
轉換為PDF,然後轉換為SWF,網上很多這個過程的代碼,你可以看看