❶ flexpaper在线预览问题java linux office文件在线预览的时候出现如图的问题,不能预览,求大神帮忙
swftools-0.9.1.exe 和 FlexPaper_1.4.5_flash.zip,工具网上下载。
二、pdf转换SWF文件核心类:
public class DocConverter {
private static final int environment = 1;// 环境1:windows,2:linux(涉及pdf2swf路径问题)
private String fileString;
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
*/
/*
* 转换成swf
*/
private void pdf2swf() throws Exception {
Runtime r = Runtime.getRuntime();
if (!swfFile.exists()) {
if (pdfFile.exists()) {
if (environment == 1)// windows环境处理
{
try {
// 这里根据SWFTools安装路径需要进行相应更改
Process p = r.exec("G:/Program Files/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 (Exception 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;
//把InputStream字节流 替换为BufferedReader字符流 2013-07-17修改
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder buffer = new StringBuilder();
while ((ptr = reader.read()) != -1) {
buffer.append((char) ptr);
}
return buffer.toString();
}
/*
* 转换主方法
*/
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) {
// TODO: Auto-generated catch block
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");
}
}
}
}
三、JSP文件,注意引入的几个js文件和FlexPaperViewer.swf文件,其中FlexPaperViewer.swf和jsp文件放在同一目录即可。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String paths=(String)request.getAttribute("swfpath");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>te</title>
<style type="text/css" media="screen">
html, body { height:100%; }
body { margin:0; padding:0; overflow:auto; }
#flashContent { display:none; }
</style>
<script type="text/javascript" src="<%=basePath %>js/swfobject/swfobject.js"></script>
<script type="text/javascript" src="<%=basePath %>js/flexpaper_flash.js"></script>
<script type="text/javascript">
//<!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->
var swfVersionStr = "10.0.0";
//<!-- To use express install, set to playerProctInstall.swf, otherwise the empty string. -->
/* var xiSwfUrlStr = "playerProctInstall.swf"; */
var xiSwfUrlStr = ""; //值可以任意
var flashvars = {
SwfFile : escape("<%=basePath+paths%>"), //swf文件路径(lucene4.6和页面同一个位置)
Scale : 0.6,
ZoomTransition : "easeOut",
ZoomTime : 0.5,
ZoomInterval : 0.1,
FitPageOnLoad : false,
FitWidthOnLoad : true,
PrintEnabled : true,
FullScreenAsMaxWindow : false,
ProgressiveLoading : true,
PrintToolsVisible : true,
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
FullScreenVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
localeChain: "en_US"
};
var params = {
}
params.quality = "high";
params.bgcolor = "#ffffff";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
var attributes = {};
attributes.id = "FlexPaperViewer";
attributes.name = "FlexPaperViewer";
swfobject.embedSWF(
"FlexPaperViewer.swf", "flashContent",
"1024", "700",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
swfobject.createCSS("#flashContent", "display:block;text-align:center;");
</script>
</head>
<body>
<div style="width: 100%;height: 90%; text-align: center;">
<div id="flashContent">
</div>
</div>
</body>
</html>
❷ linux安装swftools 执行make时报错
在swftools官网下载最新版本,官网FAQ标签中给出freetype库和jpeglib库的连接,freetype选择版本freetype-2.1.10.tar.gz,jpeglib选择版本jpegsrc.v8c.tar.gz。
先安装gcc、gcc-c++、zlib、zlib-devel
解压命令: tar -zxvf xxx.tar,解压下载下来的freetype、jpeglib安装包
进入安装包目录
然后执行:
./configure
make
make install
解压swftools,进入安装包目录,执行以下命令:
ldconfig /usr/local/lib
./configure
make
make install
make clean
make distclean
whereis pdf2swf
运行./configure命令时出现:
checking build system
type... Invalid configuration 'i686-pc-linux-': machine 'i686-pc-linux' not
recognized
configure: error:
/bin/sh ./config.sub i686-pc-linux- failed
就换为执行: ./configure --build=i686-pc-linux-gnu
运行出现:make: Nothing to be done for `unix'.
执行: make clean
然在再执行make即可
如出现创建文件时间问题,调整linux系统时间即可。
❸ linux下用gcc编译c出现的一些问题,请指教
你做 make 的时候,它会用预先设计好的命令来编译,连接源代码.你现在直接 "gcc pdf2swf.c" 就是假定整个程序只有这么一个源文件,没有非标准库.估计不大可能.很明显,源文件至少还有一个 init.c.
既然你已经能做 configure, make 和 make install,不知道为什么还要 gcc pdf2swf.c?
要用 gdb, make 的时候就必须带有 debug 信息, g++ 是 -g, gcc 不太清楚, 打 gcc --help 查一下. 另外, make 做完后,源文件不能删掉/移动,否则 gdb 就找不到了.
------------------
configure 会生成一个 Makefile, 打开后找 CCFLAG (通常是这个变量), 加上 -g 后再做 make 应该可以产生 debug 信息.你可以试试看.
❹ JAVA+JS如何在HTML页面上显示WORD文档内容ActiveX只能兼容IE不考虑!
packagecom.cectsims.util;
importjava.io.BufferedInputStream;
importjava.io.File;
importjava.io.IOException;
importjava.io.InputStream;
importcom.artofsolving.jodconverter.DocumentConverter;
importcom.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
importcom.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
importcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
/**
*docdocx格式转换
*/
publicclassDocConverter{
=1;//环境1:windows2:linux
privateStringfileString;//(只涉及pdf2swf路径问题)
privateStringoutputPath="";//输入路径,如果不设置就输出在默认的位置
privateStringfileName;
privateFilepdfFile;
privateFileswfFile;
privateFiledocFile;
publicDocConverter(StringfileString){
ini(fileString);
}
/**
*重新设置file
*
*@paramfileString
*/
publicvoidsetFile(StringfileString){
ini(fileString);
}
/**
*初始化
*
*@paramfileString
*/
privatevoidini(StringfileString){
this.fileString=fileString;
fileName=fileString.substring(0,fileString.lastIndexOf("."));
docFile=newFile(fileString);
pdfFile=newFile(fileName+".pdf");
swfFile=newFile(fileName+".swf");
}
/**
*转为PDF
*
*@paramfile
*/
privatevoiddoc2pdf()throwsException{
if(docFile.exists()){
if(!pdfFile.exists()){
=newSocketOpenOfficeConnection(8100);
try{
connection.connect();
DocumentConverterconverter=(connection);
converter.convert(docFile,pdfFile);
//closetheconnection
connection.disconnect();
System.out.println("****pdf转换成功,PDF输出:"+pdfFile.getPath()+"****");
}catch(java.net.ConnectExceptione){
e.printStackTrace();
System.out.println("****swf转换器异常,openoffice服务未启动!****");
throwe;
}catch(com.artofsolving.jodconverter.openoffice.connection.OpenOfficeExceptione){
e.printStackTrace();
System.out.println("****swf转换器异常,读取转换文件失败****");
throwe;
}catch(Exceptione){
e.printStackTrace();
throwe;
}
}else{
System.out.println("****已经转换为pdf,不需要再进行转化****");
}
}else{
System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
}
}
/**
*转换成swf
*/
@SuppressWarnings("unused")
privatevoidpdf2swf()throwsException{
Runtimer=Runtime.getRuntime();
if(!swfFile.exists()){
if(pdfFile.exists()){
if(environment==1){//windows环境处理
try{
//Processp=r.exec("D:/ProgramFiles/SWFTools/pdf2swf.exe"+pdfFile.getPath()+"-o"+swfFile.getPath()+"-T9");
Processp=r.exec("C:/ProgramFiles(x86)/SWFTools/pdf2swf.exe"+pdfFile.getPath()+"-o"+swfFile.getPath()+"-T9");
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(IOExceptione){
e.printStackTrace();
throwe;
}
}elseif(environment==2){//linux环境处理
try{
Processp=r.exec("pdf2swf"+pdfFile.getPath()
+"-o"+swfFile.getPath()+"-T9");
System.out.print(loadStream(p.getInputStream()));
System.err.print(loadStream(p.getErrorStream()));
System.err.println("****swf转换成功,文件输出:"
+swfFile.getPath()+"****");
if(pdfFile.exists()){
pdfFile.delete();
}
}catch(Exceptione){
e.printStackTrace();
throwe;
}
}
}else{
System.out.println("****pdf不存在,无法转换****");
}
}else{
System.out.println("****swf已经存在不需要转换****");
}
}
staticStringloadStream(InputStreamin)throwsIOException{
intptr=0;
in=newBufferedInputStream(in);
StringBufferbuffer=newStringBuffer();
while((ptr=in.read())!=-1){
buffer.append((char)ptr);
}
returnbuffer.toString();
}
/**
*转换主方法
*/
@SuppressWarnings("unused")
publicbooleanconver(){
if(swfFile.exists()){
System.out.println("****swf转换器开始工作,该文件已经转换为swf****");
returntrue;
}
if(environment==1){
System.out.println("****swf转换器开始工作,当前设置运行环境windows****");
}else{
System.out.println("****swf转换器开始工作,当前设置运行环境linux****");
}
try{
doc2pdf();
pdf2swf();
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
if(swfFile.exists()){
returntrue;
}else{
returnfalse;
}
}
/**
*返回文件路径
*
*@params
*/
publicStringgetswfPath(){
if(swfFile.exists()){
StringtempString=swfFile.getPath();
tempString=tempString.replaceAll("\\","/");
returntempString;
}else{
return"";
}
}
/**
*设置输出路径
*/
publicvoidsetOutputPath(StringoutputPath){
this.outputPath=outputPath;
if(!outputPath.equals("")){
StringrealName=fileName.substring(fileName.lastIndexOf("/"),
fileName.lastIndexOf("."));
if(outputPath.charAt(outputPath.length())=='/'){
swfFile=newFile(outputPath+realName+".swf");
}else{
swfFile=newFile(outputPath+realName+".swf");
}
}
}
}
转换为PDF,然后转换为SWF,网上很多这个过程的代码,你可以看看