利用java实现一个图片转PDF文件工具

互联网 20-8-27

(学习视频推荐:java课程)

具体代码:

引入依赖:

<!--该项目以SpringBoot为基础搭建--> <parent>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-parent</artifactId>     <version>2.0.4.RELEASE</version>     <relativePath/> </parent>  <dependencies> 	<!--SpringMVC的依赖,方便我们可以获取前端传递过来的文件信息-->     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-web</artifactId>     </dependency>     <!--ITextPdf,操作PDF文件的工具类-->     <dependency>         <groupId>com.itextpdf</groupId>         <artifactId>itextpdf</artifactId>         <version>5.4.2</version>     </dependency> </dependencies>
<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>图片转换Pdf</title>     <style>         .submitButton {             margin-top: 20px;             margin-left: 150px;             background-color: #e37e10;             border-radius: 10px;             border: 1px solid #ff8300;         }     </style> </head> <body>     <div style="text-align: center">         <h1>图片转换pdf工具</h1>         <form action="/pdf/image/to" enctype="multipart/form-data" method="post" onsubmit="return allowFileType()">             <input type="file" id="file" name="file" placeholder="请选择图片" onchange="allowFileType()" style="border: 1px solid black;"><br>             <input type="submit" value="一键转换pdf文件">         </form>     </div> </body> <script>     function allowFileType() {         let file = document.getElementById("file").files[0];         let fileName = file.name;         console.log(fileName)         let fileSize = file.size;         console.log(fileSize)         let suffix = fileName.substring(fileName.lastIndexOf("."),fileName.length);         if('.jpg' != suffix && '.png' != suffix) {             alert("目前只允许传入.jpg或者.png格式的图片!");             return false;         }         if(fileSize > 2*1024*1024) {             alert("上传图片不允许超过2MB!");             return false;         }         return true;     } </script> </html>

(推荐教程:java入门教程)

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);     }  }
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文件工具的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: pdf
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java中super关键字有什么用法

相关资讯