java实现word,ppt,excel,jpg转pdf
word,excel,jpeg 转 pdf
首先下载相关jar包:http://download.csdn.net/detail/xu281828044/6922499
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.pdf.PdfWriter; public class Word2Pdf { static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。
static final int wdFormatPDF = 17;// word转PDF 格式
static final int ppSaveAsPDF = 32;// ppt 转PDF 格式 public static void main(String[] args) throws IOException {
String source1 = "e:\\test.doc";
String source2 = "e:\\asd.xlsx";
String source3 = "e:\\aa.ppt";
String target1 = "e:\\test1.pdf";
String target2 = "e:\\test2.pdf";
String target3 = "e:\\test3.pdf"; Word2Pdf pdf = new Word2Pdf();
// pdf.word2pdf(source1, target1);
// pdf.excel2pdf(source2, target2);
// pdf.ppt2pdf(source3, target3);
// pdf.imgToPdf("e:/12345.jpg","e:/xu.pdf");
} public void word2pdf(String source,String target){
System.out.println("启动Word");
long start = System.currentTimeMillis();
ActiveXComponent app = null;
try {
app = new ActiveXComponent("Word.Application");
app.setProperty("Visible", false); Dispatch docs = app.getProperty("Documents").toDispatch();
System.out.println("打开文档" + source);
Dispatch doc = Dispatch.call(docs,//
"Open", //
source,// FileName
false,// ConfirmConversions
true // ReadOnly
).toDispatch(); System.out.println("转换文档到PDF " + target);
File tofile = new File(target);
if (tofile.exists()) {
tofile.delete();
}
Dispatch.call(doc,//
"SaveAs", //
target, // FileName
wdFormatPDF); Dispatch.call(doc, "Close", false);
long end = System.currentTimeMillis();
System.out.println("转换完成..用时:" + (end - start) + "ms.");
} catch (Exception e) {
System.out.println("========Error:文档转换失败:" + e.getMessage());
} finally {
if (app != null)
app.invoke("Quit", wdDoNotSaveChanges);
}
} public void ppt2pdf(String source,String target){
System.out.println("启动PPT");
long start = System.currentTimeMillis();
ActiveXComponent app = null;
try {
app = new ActiveXComponent("Powerpoint.Application");
Dispatch presentations = app.getProperty("Presentations").toDispatch();
System.out.println("打开文档" + source);
Dispatch presentation = Dispatch.call(presentations,//
"Open",
source,// FileName
true,// ReadOnly
true,// Untitled 指定文件是否有标题。
false // WithWindow 指定文件是否可见。
).toDispatch(); System.out.println("转换文档到PDF " + target);
File tofile = new File(target);
if (tofile.exists()) {
tofile.delete();
}
Dispatch.call(presentation,//
"SaveAs", //
target, // FileName
ppSaveAsPDF); Dispatch.call(presentation, "Close");
long end = System.currentTimeMillis();
System.out.println("转换完成..用时:" + (end - start) + "ms.");
} catch (Exception e) {
System.out.println("========Error:文档转换失败:" + e.getMessage());
} finally {
if (app != null) app.invoke("Quit");
}
} public void excel2pdf(String source, String target) {
System.out.println("启动Excel");
long start = System.currentTimeMillis();
ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel(Excel.Application)
try {
app.setProperty("Visible", false);
Dispatch workbooks = app.getProperty("Workbooks").toDispatch();
System.out.println("打开文档" + source);
Dispatch workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method, new Object[]{source, new Variant(false),new Variant(false)}, new int[3]).toDispatch();
Dispatch.invoke(workbook, "SaveAs", Dispatch.Method, new Object[] {
target, new Variant(57), new Variant(false),
new Variant(57), new Variant(57), new Variant(false),
new Variant(true), new Variant(57), new Variant(true),
new Variant(true), new Variant(true) }, new int[1]);
Variant f = new Variant(false);
System.out.println("转换文档到PDF " + target);
Dispatch.call(workbook, "Close", f);
long end = System.currentTimeMillis();
System.out.println("转换完成..用时:" + (end - start) + "ms.");
} catch (Exception e) {
System.out.println("========Error:文档转换失败:" + e.getMessage());
}finally {
if (app != null){
app.invoke("Quit", new Variant[] {});
}
}
} public boolean imgToPdf(String imgFilePath, String pdfFilePath)throws IOException {
File file=new File(imgFilePath);
if(file.exists()){
Document document = new Document();
FileOutputStream fos = null;
try {
fos = new FileOutputStream(pdfFilePath);
PdfWriter.getInstance(document, fos); // 添加PDF文档的某些信息,比如作者,主题等等
document.addAuthor("arui");
document.addSubject("test pdf.");
// 设置文档的大小
document.setPageSize(PageSize.A4);
// 打开文档
document.open();
// 写入一段文字
//document.add(new Paragraph("JUST TEST ..."));
// 读取一个图片
Image image = Image.getInstance(imgFilePath);
float imageHeight=image.getScaledHeight();
float imageWidth=image.getScaledWidth();
int i=0;
while(imageHeight>500||imageWidth>500){
image.scalePercent(100-i);
i++;
imageHeight=image.getScaledHeight();
imageWidth=image.getScaledWidth();
System.out.println("imageHeight->"+imageHeight);
System.out.println("imageWidth->"+imageWidth);
} image.setAlignment(Image.ALIGN_CENTER);
// //设置图片的绝对位置
// image.setAbsolutePosition(0, 0);
// image.scaleAbsolute(500, 400);
// 插入一个图片
document.add(image);
} catch (DocumentException de) {
System.out.println(de.getMessage());
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
}
document.close();
fos.flush();
fos.close();
return true;
}else{
return false;
}
}
}
另存为哪种类型是由new variant()里面的参数决定的。
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {htmlfile, new Variant(WORD_HTML) }, new int[1]);
new Variant(),这里面的根据传入的参数不同,可以另存为不同的类型,但是在网上搜索了一个并没有找到有关这个参数类型的一个说明,自己尝试了一下,结果如下:
|
0 |
Doc |
|
1 |
Dot |
|
2-5 |
Txt |
|
6 |
Rtf |
|
7 |
Txt |
|
8、10 |
htm |
|
11 |
Xml |
|
12、16 |
Docx |
|
13 |
Docm |
|
14 |
Dotx |
|
15 |
Dotm |
|
17 |
|
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import com.jacob.activeX.ActiveXComponent;
- import com.jacob.com.Dispatch;
- import com.jacob.com.Variant;
- import com.lowagie.text.Document;
- import com.lowagie.text.DocumentException;
- import com.lowagie.text.Image;
- import com.lowagie.text.PageSize;
- import com.lowagie.text.pdf.PdfWriter;
- public class Word2Pdf {
- static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。
- static final int wdFormatPDF = 17;// word转PDF 格式
- static final int ppSaveAsPDF = 32;// ppt 转PDF 格式
- public static void main(String[] args) throws IOException {
- String source1 = "e:\\test.doc";
- String source2 = "e:\\asd.xlsx";
- String source3 = "e:\\aa.ppt";
- String target1 = "e:\\test1.pdf";
- String target2 = "e:\\test2.pdf";
- String target3 = "e:\\test3.pdf";
- Word2Pdf pdf = new Word2Pdf();
- // pdf.word2pdf(source1, target1);
- // pdf.excel2pdf(source2, target2);
- // pdf.ppt2pdf(source3, target3);
- // pdf.imgToPdf("e:/12345.jpg","e:/xu.pdf");
- }
- public void word2pdf(String source,String target){
- System.out.println("启动Word");
- long start = System.currentTimeMillis();
- ActiveXComponent app = null;
- try {
- app = new ActiveXComponent("Word.Application");
- app.setProperty("Visible", false);
- Dispatch docs = app.getProperty("Documents").toDispatch();
- System.out.println("打开文档" + source);
- Dispatch doc = Dispatch.call(docs,//
- "Open", //
- source,// FileName
- false,// ConfirmConversions
- true // ReadOnly
- ).toDispatch();
- System.out.println("转换文档到PDF " + target);
- File tofile = new File(target);
- if (tofile.exists()) {
- tofile.delete();
- }
- Dispatch.call(doc,//
- "SaveAs", //
- target, // FileName
- wdFormatPDF);
- Dispatch.call(doc, "Close", false);
- long end = System.currentTimeMillis();
- System.out.println("转换完成..用时:" + (end - start) + "ms.");
- } catch (Exception e) {
- System.out.println("========Error:文档转换失败:" + e.getMessage());
- } finally {
- if (app != null)
- app.invoke("Quit", wdDoNotSaveChanges);
- }
- }
- public void ppt2pdf(String source,String target){
- System.out.println("启动PPT");
- long start = System.currentTimeMillis();
- ActiveXComponent app = null;
- try {
- app = new ActiveXComponent("Powerpoint.Application");
- Dispatch presentations = app.getProperty("Presentations").toDispatch();
- System.out.println("打开文档" + source);
- Dispatch presentation = Dispatch.call(presentations,//
- "Open",
- source,// FileName
- true,// ReadOnly
- true,// Untitled 指定文件是否有标题。
- false // WithWindow 指定文件是否可见。
- ).toDispatch();
- System.out.println("转换文档到PDF " + target);
- File tofile = new File(target);
- if (tofile.exists()) {
- tofile.delete();
- }
- Dispatch.call(presentation,//
- "SaveAs", //
- target, // FileName
- ppSaveAsPDF);
- Dispatch.call(presentation, "Close");
- long end = System.currentTimeMillis();
- System.out.println("转换完成..用时:" + (end - start) + "ms.");
- } catch (Exception e) {
- System.out.println("========Error:文档转换失败:" + e.getMessage());
- } finally {
- if (app != null) app.invoke("Quit");
- }
- }
- public void excel2pdf(String source, String target) {
- System.out.println("启动Excel");
- long start = System.currentTimeMillis();
- ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel(Excel.Application)
- try {
- app.setProperty("Visible", false);
- Dispatch workbooks = app.getProperty("Workbooks").toDispatch();
- System.out.println("打开文档" + source);
- Dispatch workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method, new Object[]{source, new Variant(false),new Variant(false)}, new int[3]).toDispatch();
- Dispatch.invoke(workbook, "SaveAs", Dispatch.Method, new Object[] {
- target, new Variant(57), new Variant(false),
- new Variant(57), new Variant(57), new Variant(false),
- new Variant(true), new Variant(57), new Variant(true),
- new Variant(true), new Variant(true) }, new int[1]);
- Variant f = new Variant(false);
- System.out.println("转换文档到PDF " + target);
- Dispatch.call(workbook, "Close", f);
- long end = System.currentTimeMillis();
- System.out.println("转换完成..用时:" + (end - start) + "ms.");
- } catch (Exception e) {
- System.out.println("========Error:文档转换失败:" + e.getMessage());
- }finally {
- if (app != null){
- app.invoke("Quit", new Variant[] {});
- }
- }
- }
- public boolean imgToPdf(String imgFilePath, String pdfFilePath)throws IOException {
- File file=new File(imgFilePath);
- if(file.exists()){
- Document document = new Document();
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(pdfFilePath);
- PdfWriter.getInstance(document, fos);
- // 添加PDF文档的某些信息,比如作者,主题等等
- document.addAuthor("arui");
- document.addSubject("test pdf.");
- // 设置文档的大小
- document.setPageSize(PageSize.A4);
- // 打开文档
- document.open();
- // 写入一段文字
- //document.add(new Paragraph("JUST TEST ..."));
- // 读取一个图片
- Image image = Image.getInstance(imgFilePath);
- float imageHeight=image.getScaledHeight();
- float imageWidth=image.getScaledWidth();
- int i=0;
- while(imageHeight>500||imageWidth>500){
- image.scalePercent(100-i);
- i++;
- imageHeight=image.getScaledHeight();
- imageWidth=image.getScaledWidth();
- System.out.println("imageHeight->"+imageHeight);
- System.out.println("imageWidth->"+imageWidth);
- }
- image.setAlignment(Image.ALIGN_CENTER);
- // //设置图片的绝对位置
- // image.setAbsolutePosition(0, 0);
- // image.scaleAbsolute(500, 400);
- // 插入一个图片
- document.add(image);
- } catch (DocumentException de) {
- System.out.println(de.getMessage());
- } catch (IOException ioe) {
- System.out.println(ioe.getMessage());
- }
- document.close();
- fos.flush();
- fos.close();
- return true;
- }else{
- return false;
- }
- }
- }
java实现word,ppt,excel,jpg转pdf的更多相关文章
- java操作word,excel,pdf
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- java操作office和pdf文件java读取word,excel和pdf文档内容
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- Windows:Word,PPT,EXCEL com+组件配置
本文所涉及到配置前提: 服务器必须安装Office套件(Word,PPT,Excel) 第一部分 Word Com+组件权限配置 1.cmd模式输入dcomcnfg 2.找到Microsoft Wor ...
- word ppt excel文档转换成pdf
1.把word文档转换成pdf (1).添加引用 using Microsoft.Office.Interop.Word; 添加引用 (2).转换方法 /// <summary> /// ...
- java 实现Word或Excel 转Pdf
1:首先需要引入相关的jar word转pdf需要引入 aspose-words-15.8.0-jdk16.jar 下载JAR包 Word http://note.youdao.com/notesha ...
- .net 实现Office文件预览 Word PPT Excel 2015-01-23 08:47 63人阅读 评论(0) 收藏
先打个广告: .Net交流群:252713569 本人QQ :524808775 欢迎技术探讨, 近期公司要求上传的PPT和Word都需要可以在线预览.. 小弟我是从来没有接触过这一块的东西 感觉很棘 ...
- Java中Office(word/ppt/excel)转换成HTML实现
运行条件:JDK + jacob.jar + jacob.dll 1) 把jacob.dll在 JAVA_HOME\bin\ 和 JAVA_HOME\jre\bin\ 以及C:\WINDOWS\sys ...
- PHP 实现Word,excel等转换pdf
近期做一个项目,须要将用户上传的word,excel文档转成PDF文档保存并打印.在网上找了非常多资料.并不全面,所以自己写了一份比較全面的教程来分享. 以下是操作步骤: 1. 安装免费 ...
- 全套Office办公软件WORD/PPT/EXCEL视频教程 每日更新中
详情见Processon分享链接:https://www.processon.com/view/link/5b3f40abe4b09a67415e2bfc
随机推荐
- forward与redirect的区别
1.从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址 ...
- 1.mybatis实战教程mybatis in action之一开发环境搭建
转自:https://www.cnblogs.com/shanheyongmu/p/5652471.html 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框 ...
- 机器学习入门-贝叶斯构造LDA主题模型,构造word2vec 1.gensim.corpora.Dictionary(构造映射字典) 2.dictionary.doc2vec(做映射) 3.gensim.model.ldamodel.LdaModel(构建主题模型)4lda.print_topics(打印主题).
1.dictionary = gensim.corpora.Dictionary(clean_content) 对输入的列表做一个数字映射字典, 2. corpus = [dictionary,do ...
- configparser 文件的生成和读写
# configparser 生成 import configparser config = configparser.ConfigParser() config[DEFUALT] = {'Serve ...
- Mysql 主- 开启binlog
https://www.cnblogs.com/martinzhang/p/3454358.html my.cnf 添加 log_bin=mysql-bin 开启日志,然后重启mysql服务器. 查看 ...
- Haskell语言学习笔记(22)MaybeT
Monad Transformers Monad 转换器用于将两个不同的Monad合成为一个Monad.Monad 转换器本身也是一个 Monad. MaybeT MaybeT 这个 Monad 转换 ...
- C#中导出EXCEL服务器端不用安装OFFICE
在实际开发过程中,有时候服务器端没安装OFFICE,你和服务器管理员去商量安装个OFFICE的时候,管理员很倔犟的不给你安装的时候,这个时候就可以考虑我这个方法是实现导出EXCEL了.如果你导出的EX ...
- 《你不知道的JavaScript下卷》知识点笔记
1. [1, 2, 3] == [1, 2, 3] 返回false [1, 2, 3] == “1, 2, 3” 返回true 2. 如果 < 比较的两个值都是字符串, 就像在b < c中 ...
- Mysql delete操作
以下摘自官方文档:https://dev.mysql.com/doc/refman/5.7/en/insert.html 语法: DELETE [LOW_PRIORITY] [QUICK] [IGNO ...
- mysql物理备份
原本以为直接将data文件夹下每个数据库对应的文件夹拷贝到新的MySQL的data文件夹就可以了,其实不然. 这样做有几个问题: 1.如果是用了引擎的表,还需要复制ibdata文件,并且frm文件所在 ...