怎么利用java实现一个图片转PDF文件工具,方法是什么?
导读:今天就跟大家聊聊有关“怎么利用java实现一个图片转PDF文件工具,方法是什么?”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 出于某些需求需要将一张简单的图片转换为PDF...
今天就跟大家聊聊有关“怎么利用java实现一个图片转PDF文件工具,方法是什么?”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。出于某些需求需要将一张简单的图片转换为PDF的文件格式,因此自己动手写了一个图片转换PDF的系统,现在将该系统分享在这里,供大家参考。
(学习视频推荐: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); } }
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文件工具,方法是什么?”的内容了,通过以上内容的阐述,相信大家对怎么利用java实现一个图片转PDF文件工具,方法是什么?已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎么利用java实现一个图片转PDF文件工具,方法是什么?
本文地址: https://pptw.com/jishu/654162.html