91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用java實現一個圖片轉PDF文件的方法

發布時間:2020-08-28 09:15:21 來源:億速云 閱讀:1157 作者:小新 欄目:編程語言

小編給大家分享一下利用java實現一個圖片轉PDF文件的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

出于某些需求需要將一張簡單的圖片轉換為PDF的文件格式,因此自己動手寫了一個圖片轉換PDF的系統,現在將該系統分享在這里,供大家參考。

具體代碼:

引入依賴:

<!--該項目以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">
        <h2>圖片轉換pdf工具</h2>
        <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>

控制層接口

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文件的方法的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石泉县| 綦江县| 莱阳市| 长汀县| 汝州市| 齐齐哈尔市| 柘荣县| 建宁县| 太保市| 沂南县| 文化| 巴南区| 石狮市| 德格县| 平邑县| 息烽县| 昭苏县| 文成县| 乌兰县| 册亨县| 华蓥市| 东港市| 太和县| 昔阳县| 漠河县| 梁平县| 无棣县| 沛县| 将乐县| 明水县| 临潭县| 孟连| 黄梅县| 临汾市| 平昌县| 宁南县| 普洱| 长沙市| 天水市| 宜兰市| 潜山县|