Commit 485f02ec by 汪鑫

pdf转图片

parent d3eb0811
...@@ -66,6 +66,24 @@ ...@@ -66,6 +66,24 @@
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
<version>1.3</version> <version>1.3</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
package com.ihooyah.model.controller; package com.ihooyah.model.controller;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
...@@ -21,12 +23,20 @@ import com.ihooyah.utils.YmlUtils; ...@@ -21,12 +23,20 @@ import com.ihooyah.utils.YmlUtils;
import com.ihooyah.utils.files.FileSaveUtils; import com.ihooyah.utils.files.FileSaveUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Encoder; import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream;
import java.util.List; import java.util.List;
@RestController @RestController
...@@ -154,4 +164,85 @@ public class CommonController extends BaseController { ...@@ -154,4 +164,85 @@ public class CommonController extends BaseController {
return RespInfo.mobiSuccess(params); return RespInfo.mobiSuccess(params);
} }
@ApiOperation("pdf转图片")
@PostMapping("pdfToImg")
public void pdfToImg(MultipartFile file, HttpServletResponse response){
try {
PDDocument doc = PDDocument.load(file.getInputStream());
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
String[] pics = new String[pageCount];
for (int i = 0; i < pageCount; i++) {
BufferedImage image = renderer.renderImageWithDPI(i, 144);
String filePath = "/home/temp/" + IdUtil.fastSimpleUUID() + "." + "jpg";
ImageIO.write(image, "jpg", new File(filePath));
pics[i] = filePath;
}
String lastFilePath = "/home/temp/" + IdUtil.fastSimpleUUID() + "." + "jpg";
this.joinImageListVertical(pics,"jpg",lastFilePath);
OutputStream stream = response.getOutputStream();
FileInputStream inputStream = new FileInputStream(lastFilePath);
IoUtil.copy(inputStream,stream);
stream.close();
inputStream.close();
for (String pic : pics) {
FileUtil.del(pic);
}
FileUtil.del(lastFilePath);
doc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean joinImageListVertical(String[] pics, String type, String dst_pic) {
try {
int len = pics.length;
if (len < 1) {
System.out.println("pics len < 1");
return false;
}
File[] src = new File[len];
BufferedImage[] images = new BufferedImage[len];
int[][] imageArrays = new int[len][];
for (int i = 0; i < len; i++) {
//System.out.println(i);
src[i] = new File(pics[i]);
images[i] = ImageIO.read(src[i]);
int width = images[i].getWidth();
int height = images[i].getHeight();
// 从图片中读取RGB
imageArrays[i] = new int[width * height];
imageArrays[i] = images[i].getRGB(0, 0, width, height, imageArrays[i], 0, width);
}
int dst_height = 0;
int dst_width = images[0].getWidth();
for (int i = 0; i < images.length; i++) {
dst_width = dst_width > images[i].getWidth() ? dst_width : images[i].getWidth();
dst_height += images[i].getHeight();
}
//System.out.println(dst_width);
//System.out.println(dst_height);
if (dst_height < 1) {
System.out.println("dst_height < 1");
return false;
}
/*
* 生成新图片
*/
BufferedImage ImageNew = new BufferedImage(dst_width, dst_height, BufferedImage.TYPE_INT_RGB);
int height_i = 0;
for (int i = 0; i < images.length; i++) {
ImageNew.setRGB(0, height_i, dst_width, images[i].getHeight(), imageArrays[i], 0, dst_width);
height_i += images[i].getHeight();
}
File outFile = new File(dst_pic);
// 写图片
ImageIO.write(ImageNew, type, outFile);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment