利用OpenOffice对html、word、pdf进行转换

 

背景及编码思路


关于用 OpenOffice 的场景更多是将 word 中的内容另存为(转化) html 。我的应用场景是将在线编辑器的内容保存为 word 格式,系细览转换为 word pdf 的一种需求。
  1.  下载Openofficehttp://download.openoffice.org/index.html ),类似于windows office的一个套件,并额外支持服务的运行方式,可理解为数据库
  2. 下载Jodconverter http://www.artofsolving.com/opensource/jodconverter),类似于jdbc 
  3. 按照OpenOffice,并启动服务:soffice -headless -accept="socket,port=8100;urp;"
  4. 引入jodconverterjar包,并编码第2章 开发过程中遇到的问题
利用OpenOffice对html、word、pdf进行转换_第1张图片
 

 

public class OpenOfficeService {
	private Logger logger = Logger.getLogger(this.getClass());
	OpenOfficeConnection con = null;

	public void convert(File sourceFile, File _targetFile) {
		try {
			if (con == null) {
				con = new SocketOpenOfficeConnection(ip, port);
			}
			con.connect();
			DocumentConverter converter = new OpenOfficeDocumentConverter(con);
			converter.convert(sourceFile, _targetFile);
			// DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
			// converter.convert(sourceFile, formatReg.getFormatByFileExtension("html"), _targetFile, formatReg.getFormatByFileExtension("pdf"));
		} catch (ConnectException e) {
			logger.error("OpenOffice异常", e);
			try {
				if (con != null) {
					con.disconnect();
					con = null;
				}
			} catch (Exception e1) {
				logger.error(e);
			}
		}
	}

	public static void main(String[] args) {
		OpenOfficeService openoffice = new OpenOfficeService();
		// 生成odt,本质上可以用word打开(可以在下载时修改为doc文件,以屏蔽用户感觉到的差异),如果生成doc,则图片会丢失
		openoffice.convert(new File("WebRoot/jsp/data/docs/a.html"), new File("WebRoot/jsp/data/docs/a.odt"));
		// 生成pdf
		openoffice.convert(new File("WebRoot/jsp/data/docs/a.html"), new File("WebRoot/jsp/data/docs/a.pdf"));
	}

	public void setIp(String ip) {
		this.ip = ip;
	}

	public void setPort(int port) {
		this.port = port;
	}

	private String ip = "127.0.0.1";
	private int port = 8100;
}
 

过程中遇到的问题

html中的图片可以转化到pdf,但是在不能转化到word中,经测试可以转化到odt文件中,所以我在开发过程中实际上是由hmt转换为odt,再在下载的过程中将后缀改为doc格式,另外,html中的图片,最好与html文件放到同一目录下,引用方式为相对目录,也可以修改html的图片路径为绝对路径。

你可能感兴趣的:(OpenOffice,html2word,word2html)