word,ppt,pdf 转图片

java 复制代码
@Override
//word
	public Result<List<String>> call(MultipartFile file, String fileName,String bizPath) {
				InputStream inputStream=null;
	 	        List<String> imgList= new ArrayList<>();
	        try {
	        	 inputStream= file.getInputStream();
		         Document doc= new Document(inputStream);
		      for (int i = 0; i < doc.getPageCount(); i++) {
	   		    	Document page = doc.extractPages(i, 1);
                    ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
	   		    	page.save(dstStream, SaveFormat.PNG);
				    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(dstStream.toByteArray());
				    BufferedImage img = ImageIO.read(byteArrayInputStream);
				    MultipartFile files = ImageUtil.multipartFile(img, System.currentTimeMillis()+"", "png");
                    //上传minio
                    Result<?> upload = uploadUtil.upload(files, bizPath, false);
                    dstStream.flush();
                    dstStream.close();
                    imgList.add(upload.getMessage());
              }
	        } catch (Exception e) {
	            e.printStackTrace();
	        }finally {
	        	if(inputStream!=null) {
	        		  try {
						inputStream.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
	        	}
			}
	        return Result.OK(imgList);
	}

	@Override
	public Result<List<String>> callPpt(MultipartFile file, String fileName, String bizPath) {
		InputStream	inputStream= null;
		List<String> imgList= new ArrayList<>();
		try {
			inputStream= file.getInputStream();
			HSLFSlideShow ppt = new HSLFSlideShow(inputStream);
			Dimension pgsize = ppt.getPageSize();
			for (int idx = 0; idx < ppt.getSlides().size(); idx++) {
				HSLFSlide slide=ppt.getSlides().get(idx);
				BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
				Graphics2D graphics = img.createGraphics();
				graphics.setPaint(Color.white);
				graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
				slide.draw(graphics);
				ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
				boolean png = ImageIO.write(img, "png", dstStream);
				if(png){
					MultipartFile files = ImageUtil.multipartFile(img, System.currentTimeMillis()+"", "png");
					Result<?> upload = uploadUtil.upload(files, bizPath, false);
					dstStream.flush();
					dstStream.close();
					imgList.add(upload.getMessage());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(inputStream!=null) {
				try {
					inputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return Result.OK(imgList);
	}

	@Override
	public Result<List<String>> callPptx(MultipartFile file, String fileName, String bizPath) {
		InputStream	inputStream= null;
		List<String> imgList= new ArrayList<>();
		try {
			inputStream= file.getInputStream();
			XMLSlideShow ppt = new XMLSlideShow(inputStream);
			Dimension pgsize = ppt.getPageSize();
			for (int idx = 0; idx < ppt.getSlides().size(); idx++) {
				XSLFSlide slide=ppt.getSlides().get(idx);
				BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
				Graphics2D graphics = img.createGraphics();
				graphics.setPaint(Color.white);
				graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
				slide.draw(graphics);
				ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
				boolean png = ImageIO.write(img, "png", dstStream);
				if(png){
					MultipartFile files = ImageUtil.multipartFile(img, System.currentTimeMillis()+"", "png");
					Result<?> upload = uploadUtil.upload(files, bizPath, false);
					dstStream.flush();
					dstStream.close();
					imgList.add(upload.getMessage());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(inputStream!=null) {
				try {
					inputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return Result.OK(imgList);
	}


	@Override
	public Result<List<String>> callPdf(MultipartFile file, String fileName, String bizPath) {
		InputStream inputStream=null;
		PDDocument doc = null;
		List<String> imgList= new ArrayList<>();
		try {
			inputStream = file.getInputStream();
			doc = PDDocument.load(inputStream);
			PDFRenderer renderer = new PDFRenderer(doc);
			for (int i = 0; i <doc.getNumberOfPages(); i++) {
				BufferedImage img = renderer.renderImageWithDPI(i, 100);
				PDFTextStripper pdfStripper = new PDFTextStripper();
				pdfStripper.setStartPage(i);
				pdfStripper.setEndPage(i);
				ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
				boolean png = ImageIO.write(img, "png", dstStream);
				if(png){
					MultipartFile files = ImageUtil.multipartFile(img, System.currentTimeMillis()+"", "png");
					Result<?> upload = uploadUtil.upload(files, bizPath, false);
					dstStream.flush();
					dstStream.close();
					imgList.add(upload.getMessage());
				}
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(doc!=null) {
				try {
					doc.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

		return Result.OK(imgList);
	}

maven

java 复制代码
!--word转pdf -->
        <dependency>
		   <groupId>com.aspose</groupId>
		   <artifactId>aspose-words</artifactId>
		   <version>15.12.0</version>
		   <scope>system</scope>
		   <systemPath>${project.basedir}/src/main/resources/lib/aspose-words-15.12.0-jdk16.jar</systemPath>
		</dependency>
        <!--ppt转pdf -->
        <dependency>
		   <groupId>com.aspose</groupId>
		   <artifactId>aspose-slides</artifactId>
		   <version>15.9.0</version>
		   <scope>system</scope>
		   <systemPath>${project.basedir}/src/main/resources/lib/aspose.slides-15.9.0.jar</systemPath>
		</dependency>
		<dependency>
			<groupId>com.aspose</groupId>
			<artifactId>aspose-words</artifactId>
			<version>21.1.0</version>
		</dependency>

		<!-- Apache PDFBox -->
		<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox</artifactId>
			<version>2.0.27</version> <!-- 确保使用最新版本 -->
		</dependency>

		<!-- 如果需要额外的功能,如字体处理,可以添加以下依赖 -->
		<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>fontbox</artifactId>
			<version>2.0.27</version> <!-- 确保版本与pdfbox一致 -->
		</dependency>


        <!--excel转pdf -->
        <dependency>
		   <groupId>com.aspose</groupId>
		   <artifactId>aspose-cells</artifactId>
		   <version>8.5.2</version>
		   <scope>system</scope>
		   <systemPath>${project.basedir}/src/main/resources/lib/aspose-cells-8.5.2.jar</systemPath>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.lowagie/itext -->
		<dependency>
			<groupId>com.lowagie</groupId>
			<artifactId>itext</artifactId>
			<version>2.1.7</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.3</version>
		</dependency>

ImageUtil

java 复制代码
 public static MultipartFile multipartFile(Image image,String fileName,String suffix){
        //创建一个ByteArrayOutputStream
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        //把BufferedImage写入ByteArrayOutputStream
        ImgUtil.write(image, suffix, os);
        //ByteArrayOutputStream转成InputStream
        InputStream input = new ByteArrayInputStream(os.toByteArray());
        //InputStream转成MultipartFile
        try {
            return new MockMultipartFile(fileName, fileName+"."+suffix, ContentType.contentType(suffix), input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

工具类和jar包找不到的私信

相关推荐
Red Red1 小时前
本科/硕士毕业论文格式修改大全|word格式修改
word
離離原上譜3 小时前
python-docx 安装与快速入门
python·word·python-docx·自动化办公·1024程序员节
羑悻的小杀马特3 小时前
告别内网限制!用StirlingPDF+cpolar打造可远程访问的PDF工具站
pdf·cpolar·1024程序员节·stirlingpdf
Knight_AL4 小时前
Spring Boot 实现 DOCX 转 PDF(基于 docx4j 的轻量级开源方案)
spring boot·pdf·开源
fs哆哆10 小时前
PDF工具(绿色单文件,免费)
pdf
TextIn智能文档云平台15 小时前
如何让AI更好地理解中文PDF中的复杂格式?
人工智能·pdf
极智-9961 天前
word怎么自动生成目录?【图文详解】word目录自动生成?怎么自动生成目录和页码?
word·word使用技巧·word怎么自动生成目录·word文档目录·怎么自动生成目录和页码·word目录自动生成·word文档目录生成
CodeCraft Studio1 天前
国产化Word处理控件Spire.Doc教程:用Java实现TXT文本与Word互转的完整教程
java·c#·word·spire.doc·word文档转换·txt转word·word转txt
会飞的小菠菜1 天前
多个PDF文档如何批量删除页眉处的多余信息
pdf·页眉页脚·批量删除
看兵马俑的程序员2 天前
RAG实现-本地PDF内容加载和切片
开发语言·python·pdf