/**
* DOC 转 PNG
*
* @param file
* @return
*/
@AutoLog(value = "DOC 转 PNG")
@ApiOperation(value = "DOC 转 PNG", notes = "DOC 转 PNG")
@GetMapping(value = "/docToPng")
public void docToDocx(HttpServletResponse response, String file, int sheetIndex) {
try {
File localFile = new File(BASE_PATH + File.separator + file);
if (localFile.exists()) {
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.addHeader("charset", "utf-8");
response.addHeader("Pragma", "no-cache");
response.setHeader("Content-disposition", "attachment;filename=png.png");
Document document = new Document(new FileInputStream(localFile));
if (sheetIndex > document.getPageCount()) {
return;
}
ImageSaveOptions options = new ImageSaveOptions(SaveFormat.PNG);
options.setPrettyFormat(true);
options.setUseAntiAliasing(true);
options.setUseHighQualityRendering(true);
OutputStream output = new ByteArrayOutputStream();
options.setPageSet(new PageSet(sheetIndex));
document.save(output, options);
ImageInputStream imageInputStream = ImageIO.createImageInputStream(parse(output));
BufferedImage image = ImageIO.read(imageInputStream);
OutputStream stream = response.getOutputStream();
ImageIO.write(image, "png", stream);
stream.flush();
stream.close();
imageInputStream.close();
output.close();
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
public static ByteArrayInputStream parse(OutputStream stream) {
ByteArrayOutputStream out = (ByteArrayOutputStream) stream;
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
return in;
}