首页后端开发其他后端知识怎么利用java实现一个图片转PDF文件工具,方法是什么?

怎么利用java实现一个图片转PDF文件工具,方法是什么?

时间2024-03-27 10:34:03发布访客分类其他后端知识浏览600
导读:今天就跟大家聊聊有关“怎么利用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

若转载请注明出处: 怎么利用java实现一个图片转PDF文件工具,方法是什么?
本文地址: https://pptw.com/jishu/654162.html
HTML5如何保存画布,HTML5保存画布方法 File类的构造方法是什么,有哪些常用功能?

游客 回复需填写必要信息