Java中将word生成缩略图

解决思路是:

1、先将word生成pdf,这个采用openoffice或者jacob

2、然后将pdf生成图片

具体代码如下:

private void officeToPdf(){

OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);

try {

connection.connect();

} catch (ConnectException e) {

e.printStackTrace();

}

DocumentConverter converter = new OpenOfficeDocumentConverter(

connection);

converter.convert(officeFile, pdfFile);

// close the connection

connection.disconnect();

}

// 将PDF格式的文件转换为JPG格式的文件

private  void pdfToJPG(String inputFile)

throws IOException {

// load a pdf from a byte buffer

File file = new File(inputFile);

RandomAccessFile raf = new RandomAccessFile(file, "r");

FileChannel channel = raf.getChannel();

//这句代码通道建立了map映射,如果要删除file那么得接触映射

ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0,

channel.size());

PDFFile pdffile = new PDFFile(buf);

int totalpage =pdffile.getNumPages();

for (int i = 1; i <= totalpage; i++) {

if (i == 1) {

// draw the first page to an image

// 以图片的形式来描绘首页

PDFPage page = pdffile.getPage(i);

Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()

.getWidth(), (int) page.getBBox().getHeight());

// generate the image

// 生成图片

Image img = page.getImage(rect.width, rect.height, // width &

// height

rect, // clip rect

null, // null for the ImageObserver

true, // fill background with white

true // block until drawing is done

);

BufferedImage tag = new BufferedImage(rect.width, rect.height,

BufferedImage.TYPE_INT_RGB);

tag.getGraphics().drawImage(img.getScaledInstance(rect.width, rect.height,  Image.SCALE_SMOOTH), 0, 0, rect.width, rect.height,

null);

FileOutputStream out = new FileOutputStream( imagePath+"\\"+fileName.substring(fileName.lastIndexOf("/")+1)

+ ".jpg"); // 输出到文件流

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(tag); // JPEG编码

// 关闭输出流

out.close();

break;

}

}

buf.clear();

channel.close();

raf.close();

unmap(buf);

file.delete();

}

//解除map映射

public static <T> void unmap(final Object buffer) {

AccessController.doPrivileged(new PrivilegedAction<T>(){

@Override

public T 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();

}

return null;

}

});

}

需要注意的是,我生成完图片后将pdf删除,但是删除失败,经过大牛的指点加上了unmap就ok了,故写下来分享给大家。

需要的jar包是PDFRenderer.jar和jodconverter-2.2.2.jar包,如果使用jacob还得加入jacob.jar

时间: 2024-08-28 20:37:36

Java中将word生成缩略图的相关文章

java根据模板生成word文件

原文:java根据模板生成word文件 源代码下载地址:http://www.zuidaima.com/share/1550463664884736.htm AVA生成word模板程序步骤 1. 将freemarker-2.3.13.jar复制到项目\WEB-INF\lib目录下 2. 编辑模板文件 (1) 将DOC文件另存为xml文件,将xml文件在eclipse环境下打开,右键选"源"→"格式".此处注意xml文件属性是UTF-8. (2) 将xml文件中需要替

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

Java生成缩略图之Thumbnailator

Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量.同时还支持根据一个目录批量生成缩略图. 原图如下:  1.指定大小进行缩放 Java代码   //size(宽度, 高度) /* * 若图片横比200小,高比300小,不变 * 若图片横比200小,高比300大,高缩小到300,图片比例不变 * 若图片横比200大,高比

Java生成缩略图Thumbnailator(转载)

转自(http://rensanning.iteye.com/blog/1545708) Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且 允许微调缩略图生成,同时保持了需要写入到最低限度的代码量.同时还支持根据一个目录批量生成缩略图. thumbnailator-0.4.8.jar 下载地址:http://files.cnblogs.com/files/haha12/th

java生成缩略图

@author gzkui @date 2015/1/15 @ 朋友圈项目 package qflag.ucstar.plugin.ucmbfriends.utils; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import com.sun.image.

Java利用poi生成word(包含插入图片,动态表格,行合并)

转: Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: Word生成结果: 图表 2需要的jar包:(具体jar可自行去maven下载) 注意:需要严格按照上面版本下载jar包,否则可能出现jar包之间不能匹配的导致代码报错 各种 jar包都可以在这里下载: https://mvnrepository.com/ Tes

根据图片URL裁切并生成缩略图

package jtest; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.awt.image.CropImageFilter; import java.awt.image.FilteredImageSource; import java.awt.image.ImageFilter; import

java 处理word文档 (含图片,表格内容)

由于本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求      处理Excel 可以用jxl        或者poi 2需求     用户在系统上填写信息,保存后导出标准的word文档,用户在系统上填写的信息我们用富文本编辑工具kindEditor,这个插件可以将用户从word文档拷贝的表格标签保存,但是图片信息需要另行上传. 现在问题出来了,我们要将这些包含图片,表格,特殊符号的东东生成word文档. 如果是单纯的没有特殊格字符,图片等信息,

Java将视频转为缩略图--ffmpeg

Java生成视频缩略图 对于上传视频生成缩略图使用的是ffmpeg进行生成的. 自己在网上找了如何进行编译ffmpeg的方法 但是感觉太复杂了 就到csdn上找到了编译好的ffmpeg文件 体会到ffmpeg非常强大,大部分流行的视频格式的都能生成缩略图 现在开始 首先下载ffmpeg解压 方法一: 建立一个bat文件 start E:/ffmpeg/bin/ffmpeg.exe -i %1 -ss 20 -vframes 1 -r 1 -ac 1 -ab 2 -s 160*120 -f ima