建立PDF模板,java新增內容、匯出下載PDF

來源:互聯網
上載者:User

標籤:oat   chm   boot   ring   bst   查詢   簡單的   orm   rest   

本文主要內容是:用java在pdf模板中加入資料,圖片。

廢話不多說,舉個非常簡單的例子:

首先建立word文檔,匯出PDF。

用 軟體adobe acrobat開啟,操作步驟

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在指定位置添加文本域, 儲存退出。pdf模板建立完成,我們儲存到 E:盤,起名叫 練習。

接下來是java內容。

在pom.xml檔案加入,

<!-- itext 圖片轉pdf -->        <dependency>            <groupId>com.itextpdf</groupId>            <artifactId>itextpdf</artifactId>            <version>5.5.10</version>        </dependency>

在Controller層建立,節約時間直接附上代碼

package com.boot.controller;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.itextpdf.text.Image;import com.itextpdf.text.Rectangle;import com.itextpdf.text.pdf.AcroFields;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfContentByte;import com.itextpdf.text.pdf.PdfReader;import com.itextpdf.text.pdf.PdfStamper;@RestControllerpublic class PdfController {    /**     * 匯出pdf     * @author Changhai     * @param response     * @return     * @throws UnsupportedEncodingException      */    @RequestMapping(value={"/exportpdf"})    public String exportPdf(HttpServletResponse response) throws UnsupportedEncodingException {                    // 指定解析器        System.setProperty("javax.xml.parsers.DocumentBuilderFactory",                "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");        //String path = request.getSession().getServletContext().getRealPath("/upload/");        String filename="練習.pdf";        String path="e:/";        response.setContentType("application/pdf");        response.setHeader("Content-Disposition", "attachment;fileName="                + URLEncoder.encode(filename, "UTF-8"));        OutputStream os = null;        PdfStamper ps = null;        PdfReader reader = null;        try {            os = response.getOutputStream();            // 2 讀入pdf表單            reader = new PdfReader(path+ "/"+filename);            // 3 根據表單產生一個新的pdf            ps = new PdfStamper(reader, os);            // 4 擷取pdf表單            AcroFields form = ps.getAcroFields();            // 5給表單添加中文字型 這裡採用系統字型。不設定的話,中文可能無法顯示            BaseFont bf = BaseFont.createFont("C:/WINDOWS/Fonts/SIMSUN.TTC,1",                    BaseFont.IDENTITY_H, BaseFont.EMBEDDED);            form.addSubstitutionFont(bf);            // 6查詢資料================================================            Map<String, Object> data = new HashMap<String, Object>();                data.put("name", "小帥哥");                data.put("like", "大美女");            // 7遍曆data 給pdf表單表格賦值            for (String key : data.keySet()) {                    form.setField(key,data.get(key).toString());            }            ps.setFormFlattening(true);             //-----------------------------pdf 添加圖片----------------------------------            // 通過網域名稱擷取所在頁和座標,左下角為起點            System.out.println("pdf 添加圖片");            String imgpath="e:/美女.png";            int pageNo = form.getFieldPositions("img").get(0).page;            Rectangle signRect = form.getFieldPositions("img").get(0).position;            float x = signRect.getLeft();            float y = signRect.getBottom();            // 讀圖片            Image image = Image.getInstance(imgpath);            // 擷取操作的頁面            PdfContentByte under = ps.getOverContent(pageNo);            // 根據域的大小縮放圖片            image.scaleToFit(signRect.getWidth(), signRect.getHeight());            // 添加圖片            image.setAbsolutePosition(x, y);            under.addImage(image);                             //-------------------------------------------------------------            System.out.println("===============PDF匯出成功=============");        } catch (Exception e) {            System.out.println("===============PDF匯出失敗=============");            e.printStackTrace();        } finally {            try {                ps.close();                reader.close();                os.close();            } catch (Exception e) {                e.printStackTrace();            }        }        return null;    }}

在瀏覽器上訪問

www.localhost:8080/exportpdf

好了 pdf下載成功

感謝您的閱讀

建立PDF模板,java新增內容、匯出下載PDF

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.