maven引入依赖:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.2</version>
</dependency>
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 文件预览
*/
@RestController
@RequestMapping(value = "showPdfImg")
public class ShowPdfImgController {
/**
* 日志
*/
private static final Logger logger = LoggerFactory.getLogger(ShowPdfImgController.class);
/**
* pdf转img.
* @param docId 文件id
* @param response 响应对象
*/
@CrossOrigin
@RequestMapping(value = "/img", method = { RequestMethod.GET })
public void img(@RequestParam(value = "docId") String docId, HttpServletResponse response) {
try {
long st = System.currentTimeMillis();
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
InputStream in = new FileInputStream(new File("E:\\xx.pdf"));
PDDocument pd = PDDocument.load(in);
PDFRenderer pdfRenderer = new PDFRenderer(pd);
BufferedImage combined = null;
for (int page = 0; page < pd.getNumberOfPages(); ++page) {
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 146, ImageType.RGB);
if (page == 0) {
combined = bim;
} else {
combined = merge(combined, bim);
}
}
pd.close();
OutputStream out = response.getOutputStream();
ImageIO.write(combined, "JPEG", out);
long et = System.currentTimeMillis();
System.out.print("执行时间:" + (et - st));
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 生成图像
* @param image1 对象
* @param image2 对象
* @return 对象
*/
private static BufferedImage merge(BufferedImage image1, BufferedImage image2) {
BufferedImage combined = new BufferedImage(image1.getWidth(), image1.getHeight() + image2.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics gh = combined.getGraphics();
gh.drawImage(image1, 0, 0, null);
gh.drawImage(image2, 0, image1.getHeight(), null);
gh.dispose();
return combined;
}
}