
Pour certains besoins, j'ai besoin de convertir une simple image au format de fichier PDF, j'ai donc écrit un système pour convertir des images en PDF. Maintenant, je partage le système ici, pour votre référence.
(Recommandation vidéo d'apprentissage : cours java)
Code spécifique :
Présentation des dépendances :
<!--該項目以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>
Front- fin de page?:
<!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>
(Tutoriel recommandé?: Tutoriel d'introduction à Java)
Interface de la couche de contr?le
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);
}
}
Classe d'outils 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);
}
}
Effet de réussite?:

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!