java实现springboot pdfdoc上传将这种两种文档每一页转成图片并重命名保存并附上maven的pom代码
以下是Java实现Spring Boot PDF、DOC上传并将每一页转成图片并重命名保存的代码:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
@Service
public class FileService {
public String uploadAndConvert(MultipartFile file) throws IOException {
String fileName = file.getOriginalFilename();
String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
String filePath = "upload/" + UUID.randomUUID().toString() + "/";
File directory = new File(filePath);
if (!directory.exists()) {
directory.mkdirs();
}
File newFile = new File(filePath + fileName);
file.transferTo(newFile);
String newFileName = UUID.randomUUID().toString() + ".";
if (fileExtension.equals("pdf")) {
PDDocument document = PDDocument.load(newFile);
PDFRenderer renderer = new PDFRenderer(document);
for (int i = 0; i < document.getNumberOfPages(); i++) {
BufferedImage image = renderer.renderImage(i);
ImageIO.write(image, "jpg", new File(filePath + newFileName + i + ".jpg"));
}
document.close();
} else if (fileExtension.equals("doc") || fileExtension.equals("docx")) {
XWPFDocument document = new XWPFDocument(file.getInputStream());
List<XWPFRun> runs = document.getParagraphs().get(0).getRuns();
for (int i = 0; i < runs.size(); i++) {
List<XWPFPictureData> pictures = runs.get(i).getEmbeddedPictures();
for (int j = 0; j < pictures.size(); j++) {
byte[] pictureData = pictures.get(j).getData();
BufferedImage image = ImageIO.read(new ByteArrayInputStream(pictureData));
ImageIO.write(image, "jpg", new File(filePath + newFileName + i + "-" + j + ".jpg"));
}
}
document.close();
}
return filePath;
}
}
以下是Maven的POM代码:
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.23</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
</dependencies>
原文地址: https://www.cveoy.top/t/topic/KPn 著作权归作者所有。请勿转载和采集!