怎么利用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
