Java ppt转图片
773
1
0
1年前
工具类
```
public class PPTtoImageUtils {
private static final Logger logger = LoggerFactory.getLogger(PPTtoImageUtils.class);
public static List<String> pptxToImage(File file, String bucket) {
String name = file.getName();
String fileName = FilenameUtils.getBaseName(name);
String rootPath = bucket + "/" + fileName;
List<String> urlList = Lists.newArrayList();
try {
FileInputStream is = new FileInputStream(file);
XMLSlideShow ppt = new XMLSlideShow(is);
is.close();
Dimension pgsize = ppt.getPageSize();
logger.info("pptx to image file [name:{}] [width:{}] [height:{}]", name, pgsize.width, pgsize.height);
for (int i = 0; i < ppt.getSlides().size(); i++) {
//防止中文乱码
for (XSLFShape shape : ppt.getSlides().get(i).getShapes()) {
if (shape instanceof XSLFTextShape) {
XSLFTextShape tsh = (XSLFTextShape) shape;
for (XSLFTextParagraph p : tsh) {
for (XSLFTextRun r : p) {
r.setFontFamily("宋体");
}
}
}
}
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
// clear the drawing area
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
// render
ppt.getSlides().get(i).draw(graphics);
// save the output
String filename = (i + 1) + ".png";
// 创建输出流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// 将图像输出到输出流中。
ImageIO.write(img, "png", bos);
MultipartFile multipartFile = new MockMultipartFile(filename, filename, "image/png", bos.toByteArray());
//上传到oss
String url = UploadUtils.simpleUpload(multipartFile, rootPath);
urlList.add(url);
}
} catch (Exception e) {
logger.error("pptx to image error [name:{}][e:{}] ", name,e);
throw new BusinessException(ErrorCode.PPT_TO_IMAGE_ERROR);
}
logger.info("pptx to image success [name:{}] ", name);
return urlList;
}
public static List<String> pptToImage(File file, String bucket) {
String name = file.getName();
String fileName = FilenameUtils.getBaseName(name);
String rootPath = bucket + "/" + fileName;
List<String> urlList = Lists.newArrayList();
try {
FileInputStream is = new FileInputStream(file);
HSLFSlideShow ppt = new HSLFSlideShow(new HSLFSlideShowImpl(is));
Dimension pgsize = ppt.getPageSize();
for (int i = 0; i < ppt.getSlides().size(); i++) {
//防止中文乱码
for (HSLFShape shape : ppt.getSlides().get(i).getShapes()) {
if (shape instanceof HSLFTextShape) {
HSLFTextShape tsh = (HSLFTextShape) shape;
for (HSLFTextParagraph p : tsh) {
for (HSLFTextRun r : p) {
r.setFontFamily("宋体");
}
}
}
}
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
// clear the drawing area
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
// render
ppt.getSlides().get(i).draw(graphics);
String filename = (i + 1) + ".png";
// 创建输出流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// 将图像输出到输出流中。
ImageIO.write(img, "png", bos);
MultipartFile multipartFile = new MockMultipartFile(filename, filename, "image/png", bos.toByteArray());
//上传到oss
String url = UploadUtils.simpleUpload(multipartFile, rootPath);
urlList.add(url);
}
logger.info("ppt to image success [name:{}] ", name);
return urlList;
} catch (Exception e) {
logger.error("ppt to image error [name:{}] [e:{}]", name,e);
throw new BusinessException(ErrorCode.PPT_TO_IMAGE_ERROR);
}
}
/***
* 功能 :调整图片大小
* @param srcImgPath 原图片路径
* @param distImgPath 转换大小后图片路径
* @param width 转换后图片宽度
* @param height 转换后图片高度
*/
public static void resizeImage(String srcImgPath, String distImgPath,
int width, int height) throws IOException {
File srcFile = new File(srcImgPath);
Image srcImg = ImageIO.read(srcFile);
BufferedImage buffImg = null;
buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
buffImg.getGraphics().drawImage(
srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,
0, null);
ImageIO.write(buffImg, "JPEG", new File(distImgPath));
}
}
```
测试类
```
@Test
public void pptTest() {
File pptFile = new File("/Users/gaoyuan/Downloads/WPSPhoto/测试.ppt");
File pptxFile = new File("/Users/gaoyuan/Downloads/WPSPhoto/未命名.pptx");
System.out.println("AbsolutePath:"+pptFile.getAbsolutePath());
System.out.println("name:"+pptFile.getName());
String outPath = "/Users/gaoyuan/Downloads/WPSPhoto/";
List<String> list = Lists.newArrayList();
String bucket = "lejian/others/ppt_image";
String path2003 = "/Users/gaoyuan/Downloads/WPSPhoto/测试.ppt";
String path2007 = "/Users/gaoyuan/Downloads/WPSPhoto/未命名.pptx";
try {
// List<String> strings = PPTtoImageUtils.pptxToImage(pptxFile, bucket);
// System.out.println(JSON.toJSONString(strings));
List<String> urlList = PPTtoImageUtils.pptToImage(pptFile, bucket);
System.out.println(JSON.toJSONString(urlList));
} catch (Exception e) {
e.printStackTrace();
}
}
```