当前位置: 首页 > 编程日记 > 正文

仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf...

第三步,使用JODConverter将office文档转换为pdf

JODConverter是一个java的OpenDucument文件转换器,可以进行许多文件格式的转换,它利用

OpenOffice来进行转换工作,它能进行以下的转换工作:

1.Microsoft Office格式转换为OpenDucument,以及OpenDucument转换为Microsoft Office

2.OpenDucument转换为PDF,Word、Excel、PowerPoint转换为PDF,RTF转换为PDF等。

它是一个开源项目。

笔者的项目是在MyEclipse下开发的。

下载最新版的jodconverter-2.2.2,把lib文件夹的包导入到你的DocConverter项目的lib文件夹内。

(假设你的项目是DocConverter)

新建DOC2PDFUtil.java

package com.iori.webapp.util;
import java.io.File;
import java.io.IOException;
import java.net.ConnectException;
import java.util.Date;

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;

public class DOC2PDFUtil extends java.lang.Thread {
private File inputFile;// 需要转换的文件
private File outputFile;// 输出的文件

public DOC2PDFUtil(File inputFile, File outputFile) {
this.inputFile = inputFile;
this.outputFile = outputFile;
}

public void docToPdf() {
Date start = new Date();

OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
try {
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
} catch (ConnectException cex) {
cex.printStackTrace();
} finally {
// close the connection
if (connection != null) {
connection.disconnect();
connection = null;
}
}
}

/**
* 由于服务是线程不安全的,所以……需要启动线程
*/
public void run() {
this.docToPdf();
}

public File getInputFile() {
return inputFile;
}

public void setInputFile(File inputFile) {
this.inputFile = inputFile;
}

public File getOutputFile() {
return outputFile;
}

public void setOutputFile(File outputFile) {
this.outputFile = outputFile;
}

/**
* 测试main方法
*
@param args
*/
public static void main(String[] args) {
File inputFile = new File("c://temp//333.xls");
File outputFile = new File("c://temp//333.pdf");
DOC2PDFUtil dp=new DOC2PDFUtil(inputFile,outputFile);
dp.start();
}
}

在DOC2PDFUtil.java,右键属性 - >Run as - >Java Application ,输出main的测试结果。

在jsp中执行

新建MyDOC2PDFTest.jsp

<%@ page import="java.io.*"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.connection.*"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.connection.*"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.converter.*"%>
<%@ page import="com.artofsolving.jodconverter.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.iori.webapp.util.*"%>

<%
File inputFile = new File("c://temp//333.xls");
File outputFile = new File("c://temp//333.pdf");
DOC2PDFUtil dp=new DOC2PDFUtil(inputFile,outputFile);
dp.start();
%>
<!-- 下面这些html可以去掉 -->
<html>
<head><title>Simple jsp page</title></head>
<body>Place your content here</body>
</html>

在项目DocConverter根目录,右键属性 - >Run as - >MyEclipse Server Application

发布到之前安装的Tomcat 6.0的根目录,然后用url路径访问:Http://localhost:8080/DocConverter/MyDOC2PDFTest.jsp 进行测试。

JODConverter将office文档转换pdf,用到的代码如下:

File inputFile = new File("c://temp//333.xls");
File outputFile = new File("c://temp//333.pdf");

// 链接 一个运行在8100端口的OpenOffice.org 实例
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();

// 创建一个converter对象并转换格式
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);

// 关闭连接
connection.disconnect();



仿百度文库方案[openoffice.org 3+swftools+flexpaper](一) 之 tomcat6.0+jdk1.6环境配置

仿百度文库方案[openoffice.org 3+swftools+flexpaper](二) 之 安装openoffice.org

仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf

仿百度文库方案[openoffice.org 3+swftools+flexpaper](四) 之 使用swftools将pdf转换为swf
仿百度文库方案[openoffice.org 3+swftools+flexpaper](五) 之 转换pdf的同时,进一步转为swf
仿百度文库方案[openoffice.org 3+swftools+flexpaper](六) 之 flexpaper在线浏览swf文档
仿百度文库方案[openoffice.org 3+swftools+flexpaper](七) 之 使用iText将jpg、jpeg、png转换为pdf
仿百度文库方案[openoffice.org 3+swftools+flexpaper](八) 之 常见问题集FAQ

转载于:https://www.cnblogs.com/star-studio/archive/2011/12/09/2282411.html

相关文章:

刻意练习:LeetCode实战 -- Task10. 两数相加

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

Ether-channel 以太网通道

Ether-channel通常称之为以太网链路捆绑&#xff0c;或者叫链路汇聚&#xff0c;链路聚合。作用&#xff1a;将多个类似的接口&#xff0c;捆绑成一个逻辑接口&#xff0c;从而增加设备之间的传输带宽增加设备之间的连接可靠性不但可以在链路设备之间形成链路备份&#xff0c;还…

web前端开发培训有哪些学习阶段

​ web前端技术主要针对于移动互联网是比较多的&#xff0c;对于零基础的同学来说前期主要学习基本的静态布局&#xff0c;HTML CSS&#xff0c;下面是web前端开发培训有哪些学习阶段的具体内容。 ​ web前端开发培训有哪些学习阶段? 一、html5如何学习 1.HTML5 CSS3 JQ …

自己动手重新实现LINQ to Objects: 9 - SelectMany

本文翻译自Jon Skeet的系列博文“Edulinq”。 本篇原文地址&#xff1a; http://msmvps.com/blogs/jon_skeet/archive/2010/12/27/reimplementing-linq-to-objects-part-9-selectmany.aspx 我们接下来要实现的这个操作符是LINQ中最重要的操作符。大多数&#xff08;或者是全部…

1.8 centos7 的PATH、cp/mv/文档查看命令介绍

环境变量PATH什么是环境变量&#xff1f;环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;如&#xff1a;临时文件夹位置和系统文件夹位置等。[rootcentos7 ~]# echo $PATH #查看PATH环境变量 /usr/local/sbin:/usr/local/bin:/usr/sbin…

刻意练习:LeetCode实战 -- Task11. 删除链表的倒数第N个节点

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

https和http有什么区别?看下面介绍就知道了!

https和http有什么区别?相信很多还在学习软测的同学们&#xff0c;都会有遇到这种问题&#xff0c;下面就是小编给大家介绍的http相关的知识 。 一、http和https基本概念 1. HTTP&#xff1a;是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应…

C#图片灰度处理(位深度24→位深度8),用灰度数组byte[]新建一个8位灰度图像Bitmap 。...

原文:C#图片灰度处理(位深度24→位深度8) #region 灰度处理/// <summary>/// 将源图像灰度化&#xff0c;并转化为8位灰度图像。/// </summary>/// <param name"original"> 源图像。 </param>/// <returns> 8位灰度图像。 </return…

日期NSDate的使用

日期类NSDate,存储的是世界标准时(UTC)&#xff0c;输出时需要根据时区转换为本地时间方法description字符串以GMT0展示日期如&#xff1a;2011-11-16 07:02:25 0000测试的北京时间&#xff1a;2011-11-16 15:02:25.324/))))((((/格式化日期类型&#xff0c;使用NSDateFormatte…

刻意练习:LeetCode实战 -- Task12. 合并K个排序链表

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

软测培训机构哪个比较好

软件测试这个岗位是软件开发过程中非常重要的一步&#xff0c;一个软件的开发是少不了软测工程师的&#xff0c;近几年&#xff0c;软测的发展前景越来越可观&#xff0c;很多人都想学习软测技术&#xff0c;那么市面上软测培训机构哪个比较好呢?来看看下面的详细介绍。 软测培…

刻意练习:LeetCode实战 -- Task13. 罗马数字转整数

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

[翻译]ASP.NET MVC 3 开发的20个秘诀(十二)[20 Recipes for Programming MVC 3]:缩放图片尺寸创建缩略图...

议题 用户上传到网站上的大多数的图片都是大尺寸的照片&#xff0c;通常在用户想看完整图片之前网站会展示出这些图片或照片的缩略图。 解决方案 使用以下的类来调整上传的图片文件的宽和高&#xff1a;FileStream&#xff0c;Image&#xff0c;Bitmap和Graphics。 讨论 在下面…

Vue.js双向绑定的实现原理

Vue.js 最核心的功能有两个&#xff0c;一是响应式的数据绑定系统&#xff0c;二是组件系统。本文仅探究双向绑定是怎样实现的。先讲涉及的知识点&#xff0c;再用简化得不能再简化的代码实现一个简单的 hello world 示例。 一、访问器属性 访问器属性是对象中的一种特殊属性&a…

学习UI设计的一些小技巧你会了吗

最近有很多小伙伴都在学习UI设计技术&#xff0c;对于如今的互联网行业&#xff0c;UI设计这个岗位的需求量确实非常大&#xff0c;发展空间比较好&#xff0c;下面小编就为大家整理一些学习UI设计的一些小技巧&#xff0c;希望能够帮助到正在学习UI设计的同学。 学习UI设计的一…

30个精美的模板,贺卡,图形圣诞素材

圣诞节离我们越来越近了&#xff0c;当我们送礼物给我们所爱的&#xff0c;花时间与家人欢乐。我们都喜欢收到圣诞贺卡。&#xff0c;如果你有大量的生活很远的亲戚的话&#xff0c;你可以给他一个Email。本文介绍了从商场收集的30个圣诞素材&#xff0c;你可以创造圣诞的心情&…

刻意练习:LeetCode实战 -- Task14. 最长公共前缀

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

6.1.1 验证注解的使用

数据注解特性定义在名称空间System.ComponentModel.DataAnnotations 中(但接下来 将看到&#xff0c;有些特性不是定义在这个名称空间中)。它们提供了服务器端验证的功能&#xff0c;当在模 型的属性上使用这些特性之一时&#xff0c;框架也支持客户端验证。在名称空间DataAnno…

Javascript创建数组的方式你了解了吗

Javascript数组 数组(Array)是一种复杂的数据类型&#xff0c;它属于Object(对象)类型&#xff0c;用来将一组数组合在一起&#xff0c;通过一个变量就可以访问一组数据。在使用数组时&#xff0c;经常会搭配循环语句使用&#xff0c;从而很方便地对一组数据进行处理。 创建数组…

loadrunner另类玩法【测试帮日记公开课】

https://edu.51cto.com/course/10658.html

刻意练习:LeetCode实战 -- Task15. 有效的括号

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

对口令协议的几种攻击方式

1、窃听入侵者搭线窃听&#xff0c;试图从正在进行的通信中获得有用的信息。 2、重放入侵者记录过去通信中的消息并在以后的通信中重放它们。 3、中间人攻击入侵拦截各主体之间的消息&#xff0c;并用自己的消息来取代它们。在向服务器发送的消息中他假冒用户的身份&#xff0c…

初学者如何学Java开发

初学者如何学Java开发?这是很多人都比较关注的一个问题&#xff0c;尤其是对于零基础想要学习java的同学&#xff0c;java技术语言包含的知识点有很多&#xff0c;下面小编就给大家整理一些建议希望可以帮到初学者们。 初学者如何学Java开发? 1.教材的选择 学习Java书籍的选择…

[算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]

1 #include<iostream>2 #include<cmath>3 #include<cstdio>4 #include<iomanip>5 using namespace std;6 double h0.1;//步差7 double xi[11]{0};8 double ol_yi[11]{1};9 double gol_yi[11]{1}; 10 double rk_yi[11]{1}; 11 double real_yi[11]{1}; 1…

刻意练习:LeetCode实战 -- Task16. 无重复字符的最长子串

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

轻松实现QQ用户接入

1. 申请合作伙伴ID (PID),Key (PKey)2. 发送请求 https://graph.qq.com/oauth2.0/authorize?response_typecode&client_id100000353&redirect_urihttp://www.wodongni.com/loginReturn.aspx redirect_uri:回传URL client_id: 合作伙伴ID (PID) 返回&#xff1a; …

web前端培训之Javascript如何改变数组的长度?

修改数组长度 使用“数组名.length”可以获取或修改数组的长度。数组长度的计算方式为数组中元素的最大索引值加1&#xff0c;示例代码如下。 var arr [a, b, c]; console.log(arr.length); //输出结果:3 在上述代码中&#xff0c;数组中最后一个元素是c&#xff0c;该元素的索…

刻意练习:LeetCode实战 -- Task17. 最长回文子串

背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法&#xff08;Leetcode&#xff09;刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式&#xff0c;即选择了五个知识点&#xff08;数组、链表、字符串、树、贪心算法&#xff09;&#xff0c;每个知识点选择了…

CvBlobTrackerCC 多目标跟踪算法简析

&#xff08;1&#xff09;跟踪器的建立&#xff1a;对新产生的目标&#xff0c;且宽&#xff08;高&#xff09;大于5时&#xff0c;建立跟踪器 &#xff08;2&#xff09;Kalman滤波&#xff1a;用Kalman滤波器对目标当前的方位、大小做出预测 目标特征矢量采用(x, y, dx, dy…

linux基础学习(二)

------------------------------------------------------------------------------------------------------------------------------------------------0.真机远程管理虚拟机telnet 明文传输 tcp 23ssh 加密传输 tcp 22ssh -X root172.25.0.11 //真机远程管理 ser…