小编给大家分享一下利用java实现一个图片转PDF文件的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
成都创新互联公司主要从事网站建设、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务射阳,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
出于某些需求需要将一张简单的图片转换为PDF的文件格式,因此自己动手写了一个图片转换PDF的系统,现在将该系统分享在这里,供大家参考。
具体代码:
引入依赖:
org.springframework.boot spring-boot-starter-parent 2.0.4.RELEASE org.springframework.boot spring-boot-starter-web com.itextpdf itextpdf 5.4.2
前端页面:
图片转换Pdf 图片转换pdf工具
控制层接口
package com.hrp.controller; import com.hrp.util.PdfUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; /** * @description: 用于处理Pdf相关的请求 */ @Controller @RequestMapping("pdf") public class PdfController { @PostMapping("image/to") public void imageToPdf(@RequestParam("file") MultipartFile file,HttpServletResponse response) throws Exception{ PdfUtils.imageToPdf(file,response); } }
PDF工具类
package com.hrp.util; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Image; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.PdfWriter; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; /** * @description: pdf相关的工具类 */ @Component public class PdfUtils { /** * 图片转换PDF的公共接口 * * @param file SpringMVC获取的图片文件 * @param response HttpServletResponse * @throws IOException IO异常 * @throws DocumentException PDF文档异常 */ public static void imageToPdf(MultipartFile file, HttpServletResponse response) throws IOException, DocumentException { File pdfFile = generatePdfFile(file); downloadPdfFile(pdfFile, response); } /** * 将图片转换为PDF文件 * * @param file SpringMVC获取的图片文件 * @return PDF文件 * @throws IOException IO异常 * @throws DocumentException PDF文档异常 */ private static File generatePdfFile(MultipartFile file) throws IOException, DocumentException { String fileName = file.getOriginalFilename(); String pdfFileName = fileName.substring(0, fileName.lastIndexOf(".")) + ".pdf"; Document doc = new Document(PageSize.A4, 20, 20, 20, 20); PdfWriter.getInstance(doc, new FileOutputStream(pdfFileName)); doc.open(); doc.newPage(); Image image = Image.getInstance(file.getBytes()); float height = image.getHeight(); float width = image.getWidth(); int percent = getPercent(height, width); image.setAlignment(Image.MIDDLE); image.scalePercent(percent); doc.add(image); doc.close(); File pdfFile = new File(pdfFileName); return pdfFile; } /** * * 用于下载PDF文件 * * @param pdfFile PDF文件 * @param response HttpServletResponse * @throws IOException IO异常 */ private static void downloadPdfFile(File pdfFile, HttpServletResponse response) throws IOException { FileInputStream fis = new FileInputStream(pdfFile); byte[] bytes = new byte[fis.available()]; fis.read(bytes); fis.close(); response.reset(); response.setHeader("Content-Type", "application/pdf"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(pdfFile.getName(), "UTF-8")); OutputStream out = response.getOutputStream(); out.write(bytes); out.flush(); out.close(); } /** * 等比压缩,获取压缩百分比 * * @param height 图片的高度 * @param weight 图片的宽度 * @return 压缩百分比 */ private static int getPercent(float height, float weight) { float percent = 0.0F; if (height > weight) { percent = PageSize.A4.getHeight() / height * 100; } else { percent = PageSize.A4.getWidth() / weight * 100; } return Math.round(percent); } }
实现效果:
以上是利用java实现一个图片转PDF文件的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!