package com.yunfengtech.common;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import org.apache.log4j.Logger;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;
public class HtmlToWord {
private static Logger logger = Logger.getLogger("default");
public static boolean writeWordFile(String inputFile, String outputFile)
throws Exception {
boolean w = false;
outputFile = getUrl();
logger.error("export word file dir is :" + outputFile);
if (!"".equals(outputFile)) {
// 检查目录是否存在
File fileDir = new File(outputFile);
logger.error("export word file dir is exist :" + fileDir.exists());
if (fileDir.exists()) {
// 生成临时文件名称
String fileName = "report.doc";
// IE兼容问题
inputFile = inputFile.replaceAll("colSpan", "colspan")
.replaceAll("rowSpan", "rowspan")
.replaceAll("cellSpacing", "cellspacing")
.replaceAll("\"", "\'");
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
try{
if(isWindowsSystem()){
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
}else{
fontResolver.addFont("/usr/share/fonts/chinese/TrueType/simsun.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
}
}catch(Exception e1){
e1.printStackTrace();
logger.error("export word addFont exception :"+e1);
}finally{
}
StringBuffer html = new StringBuffer();
html.append("<!DOCTYPE html PUBLIC \'-//W3C//DTD XHTML 1.0 Transitional//EN\' \'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\'>");
html.append("<html xmlns=\'http://www.w3.org/1999/xhtml\'>")
.append("<head>")
.append("<meta http-equiv=\'Content-Type\' content=\'text/html; charset=UTF-8\' />")
.append("<style type=\'text/css\' mce_bogus=\'1\'>body {font-family: SimSun;} .reportTitle{font-size:20pt;font-weight:bold;}</style>")
.append("</head>").append("<body>")
.append(inputFile);
html.append("</body></html>");
String content = html.toString();
ByteArrayInputStream bais = null;
POIFSFileSystem poifs = null;
FileOutputStream ostream = null;
try{
byte b[] = content.getBytes();
bais = new ByteArrayInputStream(b);
poifs = new POIFSFileSystem();
DirectoryEntry directory = poifs.getRoot();
@SuppressWarnings("unused")
DocumentEntry documentEntry = directory.createDocument("WordDocument", bais);
ostream = new FileOutputStream(outputFile + fileName);
poifs.writeFilesystem(ostream);
}catch(Exception e){
e.printStackTrace();
logger.error("export word exception :"+e);
}finally{
if(bais != null){
bais.close();
}
if(ostream != null){
ostream.close();
}
}
}
}
return w;
}
public static String getUrl() {
String path = HtmlToWord.class.getProtectionDomain().getCodeSource()
.getLocation().getPath();
int index = path.lastIndexOf("WEB-INF/lib");
if (index == -1) {
index = path.lastIndexOf("WEB-INF/classes");
}
String realPath = path.substring(0, index);
realPath = realPath.replace("%20", " ");
return realPath;
}
public static Boolean isWindowsSystem(){
Boolean b = false ;
String os = System.getProperties().getProperty("os.name");
logger.error("the os is :"+os);
if(os != null && os.toLowerCase().startsWith("windows")){
b = true;
}
return b;
}
}
分享到:
相关推荐
首先,我们需要理解Java中导出Word文档的主要库Apache POI。Apache POI是Java社区中广泛采用的API,它允许程序员创建、修改和显示Microsoft Office格式的文件,包括Word(.docx)、Excel(.xlsx)和PowerPoint(....
主要功能: ... 2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。 3.文件目录多级共享,可共享整个用户空间。 4.树状显示系统功能和目录结构,操作方便。...数据库连接字符串在web.config文件中。
数据库连接字符串在web.config文件中。 开发商:深圳市盛世桃源网络科技有限公司 官方网站:http://www.mytaoyuan.com/ 技术支持论坛:http://bbs.mytaoyuan.com 产品文档中心:...
主要功能: 1.... 2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。 3.文件目录多级共享,可共享整个用户空间。 4.... 数据库连接字符串在web.config文件中。
报表文档和报表数据可以通过URL(或本地文件路径)请求从Web服务器(或本地操作系统)的返回结果中加载,可以从内存中的XML字符串加载,也可以通过编程(调用API编程接口)动态生成。 ReportAll控件/插件不依赖于...
m=m+1`首先计算字符串"119"的长度,长度为3,然后试图打印m的值并将其加1,但由于错误的语法,这段代码无法正常执行,所以显示结果是空。 12. 内存和外存的区别在于内存速度快但容量小,外存速度慢但容量大,价格...
完善 字符串长度截取函数 5.改进前台底部友情链接间隔符 6.纠正留言和评论提交成功后会弹出验证码的BUG 7.纠正会员注册计算是否允许再次注册时出现页面错误BUG 8.纠正其他几个小细节 2012年04月17日 1.后台...
- QUOTING:说明了如何使用引号在bash中处理字符串。 - PARAMETERS:介绍了变量的定义和使用。 - EXPANSION:解释了bash中的参数扩展。 - REDIRECTION:描述了重定向输入输出的方法。 - ALIASES:说明了如何在bash中...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
主要功能:1....2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。3.文件目录多级共享,可共享整个用户空间。4.树状显示系统功能和目录结构,操作方便。...数据库连接字符串在web.config文件中。
- **@Trim**: 是一个内置的LotusScript函数,用于去除字符串两端的空白字符。 - **@DbColumn**: 此函数用于获取指定列的信息。通常在视图中使用此函数来获取特定列的内容。 #### 2. 隐藏判断常用的命令 - **常用...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
更新:过滤一些字符串的空格,减少误操作的可能性 2015.12.20 更新:更新摇一摇提示信息,避免产生不必要的误会 2015.12.19 新增:增加1个自定义背景图的主题 新增:可以自定义上传logo图片 更新:微信上墙后台刷新待...