<script language="javascript" type="text/javaScript">
function readWord(){
var worldObj=null //操作Word的ActiveX对象
try{
wordObj=new ActiveXObject("Word.Application")
}
catch(e){
window.alert("创建ActiveX对象失败!")
return
}
var doc=wordObj.Documents.open("E://test//月下独酌.doc") //得到Word文档
doc.Windows(1).selection.WholeStory() //选中整个文档
document.getElementById("content").innerText=doc.Windows(1).selection.Text
//将文档的内容赋给页面中的元素
wordObj.activeDocument.Close(0) //关闭word文档
wordObj.Quit() //退出ActiveX控件
/*
Documents.Open()方法有3个参数:目标文件路径,文件编辑器,以及是否已读写模式打开目标文件,如果后两个未指定,
系统将默认以当前系统中注册的编辑器以及读写模式打开目标文件
*/
}
</script>
最近修改公司vue项目中使用pdf.js来实现在线预览上传的各类文件.由于使用pdf.js在预览时是直接在标签内将src属性赋值为要请求的地址.这就导致一个问题,会直接请求服务器的文件路径地址,而这个服务器文件路径就会暴露出来。处于安全性考虑在预览请求时不再返回地址,改为通过调用普通接口,而是统一返回流(word,pdf)或者base64(jpg,png...)。.前端再进行解析并实现在线预览.
此时遇到第一个问题:
这个请求是在插件中进行的无法携带项目中封装的各类请求头信息(token..等)。 翻看pdf.js源码及网上总结.发现一个底层方法
该方法可传一个对象作为参数,对象内可以添加url(所请求的接口),headers(请求头信息)等.... . 有了这个方法就好处理了.
最后在将该方法当做变量赋值给pdf的src.大功告成.
最后再补充一些 : @loaded="docLoaded" @page-loaded ="pageLoaded" 这两个方法为加载预览文件时的loading事件,
最后引一波示例,
package com.cectsims.utilimport 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,网上很多这个过程的代码,你可以看看