以下是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>
java实现springboot pdfdoc上传将这种两种文档每一页转成图片并重命名保存并附上maven的pom代码

原文地址: https://www.cveoy.top/t/topic/KPn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录