源码分享!!!world文档转换为JPG图片
http://bbs.csdn.net/topics/390055515
——————————————————————————————————————————————————
基本思路是:先将world转换为pdf,,在将pdf转换为JPG 。。然后清空缓存,,删除PDF文件!!
WordToPDF1.java
package test;import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class WordToPDF1 { public static void wordToPDF(String docfile, String toFile,int type) { ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word try { app.setProperty("Visible", new Variant(false)); //设置word程序非可视化运行 Dispatch docs = app.getProperty("Documents").toDispatch(); Dispatch doc = Dispatch.invoke( docs, "Open", Dispatch.Method, new Object[] { docfile, new Variant(false), new Variant(true) }, new int[1]).toDispatch(); //new Variant(type),这里面的type的决定另存为什么类型的文件 Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { toFile, new Variant(type) }, new int[1]); //作为PDF格式保存文件 Variant f = new Variant(false); System.out.println(toFile+".pdf");//关闭文件Dispatch.call(doc, "Close", f); } catch (Exception e) { e.printStackTrace(); } finally { //退出word程序app.invoke("Quit", new Variant[] {}); } } public static void main(String[] args) { //源文件全路径 //String docfile ="D:\\1.doc"; String docfile ="D:\\2.docx"; // String docfile ="D:\\ceshi.doc"; //for (int i = 0; i < 18; i++) { //些路径test为实际存在的目录,s后面为要另存为的文件名 String toFile="d:\\"+1222; wordToPDF(docfile, toFile,17); //17 表示格式 为PDF// } } }
PdfToJpg.java
package test;import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.lang.reflect.Method; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.security.AccessController; import java.security.PrivilegedAction;import javax.swing.SwingUtilities;import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.pdfview.PDFFile; import com.sun.pdfview.PDFPage;public class PdfToJpg {public static void setup() throws IOException {// load a pdf from a byte bufferFile file = new File("d://1.pdf");RandomAccessFile raf = new RandomAccessFile(file, "r");FileChannel channel = raf.getChannel();ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());PDFFile pdffile = new PDFFile(buf);System.out.println("页数: " + pdffile.getNumPages());BufferedImage tag = null;//将图片放入frame中//JFrame frame =null;//frame的名称// frame = new JFrame("PDF Test");//JLabel label = null;//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);for (int i = 1; i <= pdffile.getNumPages(); i++) {// draw the first page to an imagePDFPage page = pdffile.getPage(i);// get the width and height for the doc at the default zoomRectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), (int) page.getBBox().getHeight());// generate the imageImage img = page.getImage(rect.width, rect.height, // width &// heightrect, // clip rectnull, // null for the ImageObservertrue, // fill background with whitetrue // block until drawing is done );tag = new BufferedImage(rect.width, rect.height,BufferedImage.TYPE_INT_RGB);// label = new JLabel(new ImageIcon(img));// System.out.println(label); tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,null);FileOutputStream out = new FileOutputStream("d://picture//gao//"+ i + ".jpg"); // 输出到文件流 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(tag); // JPEG编码out.close();// unmap(buf);System.out.println("PDF文件转换JPG文件成功");//将label添加给frame// frame.add(label);// System.out.println(frame); }channel.close();raf.close();unmap(buf);//如果要在转图片之后删除pdf,就必须要这个关闭流和清空缓冲的方法// show the image in a frame//frame.pack();// frame.setVisible(true); }/*** 清空缓冲* @param buffer*/public static void unmap(final Object buffer) {AccessController.doPrivileged(new PrivilegedAction() {public Object run() {try {Method getCleanerMethod = buffer.getClass().getMethod("cleaner", new Class[0]);getCleanerMethod.setAccessible(true);sun.misc.Cleaner cleaner = (sun.misc.Cleaner) getCleanerMethod.invoke(buffer, new Object[0]);cleaner.clean();} catch (Exception e) {e.printStackTrace();}System.out.println("清空缓冲成功");return null;}});}public static void main(final String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {try {PdfToJpg.setup();} catch (IOException ex) {ex.printStackTrace();}}});} }
转载于:https://www.cnblogs.com/cuizhf/p/4273461.html
源码分享!!!world文档转换为JPG图片相关推荐
- 基于java二次元信息分享平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java二次元信息分享平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java二次元信息分享平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 项目架构:B ...
- JAVA计算机毕业设计音乐视频分享网站Mybatis+源码+数据库+lw文档+系统+调试部署
JAVA计算机毕业设计音乐视频分享网站Mybatis+源码+数据库+lw文档+系统+调试部署 JAVA计算机毕业设计音乐视频分享网站Mybatis+源码+数据库+lw文档+系统+调试部署 本源码技术栈 ...
- 基于java框架的图书分享系统的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java框架的图书分享系统的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java框架的图书分享系统的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库 ...
- JAVA计算机毕业设计音乐资源分享网站系统Mybatis+源码+数据库+lw文档+系统+调试部署
JAVA计算机毕业设计音乐资源分享网站系统Mybatis+源码+数据库+lw文档+系统+调试部署 JAVA计算机毕业设计音乐资源分享网站系统Mybatis+源码+数据库+lw文档+系统+调试部署 本源 ...
- 分享一套完整的汽车维修订单管理系统源码 带数据库文档
完整的汽车维修管理系统源码带数据库文档 开发环境为Microsoft Visual Studio 2012以上版本,数据库为SQLServer2008 R2,使用C#语言开发. 一个完整的汽车维修管理 ...
- 基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署
基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- JAVA计算机毕业设计校园线上点餐系统Mybatis+源码+数据库+lw文档+系统+调试部署
JAVA计算机毕业设计校园线上点餐系统Mybatis+源码+数据库+lw文档+系统+调试部署 JAVA计算机毕业设计校园线上点餐系统Mybatis+源码+数据库+lw文档+系统+调试部署 本源码技术栈 ...
- JAVA计算机毕业设计高校教材征订管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
JAVA计算机毕业设计高校教材征订管理系统Mybatis+源码+数据库+lw文档+系统+调试部署 JAVA计算机毕业设计高校教材征订管理系统Mybatis+源码+数据库+lw文档+系统+调试部署 本源 ...
- 基于JAVA高校多媒体设备运维管理系统服务端计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA高校多媒体设备运维管理系统服务端计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA高校多媒体设备运维管理系统服务端计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈 ...
- JAVA计算机毕业设计中华二十四节气文化传承宣展平台Mybatis+源码+数据库+lw文档+系统+调试部署
JAVA计算机毕业设计中华二十四节气文化传承宣展平台Mybatis+源码+数据库+lw文档+系统+调试部署 JAVA计算机毕业设计中华二十四节气文化传承宣展平台Mybatis+源码+数据库+lw文档+ ...
最新文章
- 32岁!清华大学博导,国家优秀青年科学基金获得者!
- python3 split()函数
- python中2d_【IT专家】如何在Python中复制一个2D数组?(复制)
- 交换第六天——HSRP、VRRP、GLBP、SPAN
- 牛客题霸 NC15 求二叉树的层序遍历
- 如何点击按钮弹出弹框显示几秒_layer消息框显示在鼠标旁边
- C++ 中explicit的使用
- vim cheat-sheet
- python操作界面_Python使用PyQt5的Designer工具创建UI界面
- python爬虫:两种方法模拟登录博客园
- 函数adapthisteq
- 9.14-9.18随笔之二
- 【故障分析】基于matlab GUI鼠笼式异步电机转子断条故障诊断【含Matlab源码 1089期】
- 通过开发对接淘宝联盟发单淘宝客优惠线报自动转链接社转发返利机器人球鞋搬砖
- UI设计和原型设计的区别
- 留一份名单,以供研究:2009中国企业500强全名单
- MySQL修改表的字段长度
- 元宇宙六大技术全景图
- 001-Windows驱动编程基础知识
- POSIX互斥锁自旋锁