java將html轉爲pdf使用IText

1.增加依賴

<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf</artifactId>
    <version>9.1.5</version>
</dependency>

2.java實現

/**
 * html轉pdf
 *
 * @throws Exception
 */
public static void testHtml2Pdf(String htmlfilePath) {
    String str = "";
    try {
        String tempStr = "";

        FileInputStream is = new FileInputStream(htmlfilePath);//讀取模塊文件
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        while ((tempStr = br.readLine()) != null)
            str = str + tempStr;
        is.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        //指定PDF的存放路徑
        OutputStream os = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\in.pdf");
        //OutputStream os = response.getOutputStream();
        ITextRenderer renderer = new ITextRenderer();
        ITextFontResolver fontResolver = renderer.getFontResolver();
        //指定字體。爲了支持中文字體
        if ("linux".equals(getCurrentOperatingSystem())) {
            fontResolver.addFont("/usr/share/fonts/chiness/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        } else {
            fontResolver.addFont("C:/WINDOWS/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        }

        renderer.setDocumentFromString(str);
        // 解決圖片的相對路徑問題
        //renderer.getSharedContext().setBaseURL("src/main/resources/file");
        renderer.layout();
        renderer.createPDF(os);
        renderer.finishPDF();
        os.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

public static String getCurrentOperatingSystem() {
    String os = System.getProperty("os.name").toLowerCase();
    System.out.println("---------當前操作系統是-----------" + os);
    return os;
}

對應的html

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <style type="text/css">
        /*解決html轉pdf文件中文不顯示的問題*/
        body {
            font-family: SimSun;
        }

        /*設定紙張大小*/
        /* A4紙 */
        /* @page{size:210mm*297mm} */
        @page {
            size: a4
        }

        #print {
            border-collapse: collapse;
        }

        #print td {
            border: 1px solid #333;
            word-break: break-all;
            padding: 15px 20px;
            box-sizing: border-box;
            text-align: center;
        }

        .aleft {
            text-align: left;
        }
    </style>
</head>
<body>
<div style="font-size:12px;color:#333;margin:0 auto">
    <p style="font-size:1.8rem;font-weight: bold;text-align: center;">
        案例封面
    </p>
    <p style="margin-top:0.8rem;text-align:right">案例編號:QG-20-0001</p>
    <div style="padding:2px;border:1px solid #333;">
        <table id="print">
            <tbody>
            <tr>
                <td>案例名稱</td>
                <td colspan="4">MAN主機擴壓管配焊後變形問題解決</td>
            </tr>
            <tr>
                <td>編制時間</td>
                <td colspan="2">2020.6</td>
                <td>公開範圍</td>
                <td>CSE</td>
            </tr>
            <tr>
                <td>主要完成人</td>
                <td colspan="2">杜健寧</td>
                <td>撰寫部門</td>
                <td>CSE</td>
            </tr>
            <tr>
                <td>系統類型</td>
                <td colspan="2">結構部件</td>
                <td>主要部件</td>
                <td colspan="2">掃氣箱</td>
            </tr>
            <tr>
                <td>故障類型</td>
                <td colspan="2">結構部件</td>
                <td>主要原因</td>
                <td colspan="2">掃氣箱</td>
            </tr>
            <tr>
                <td rowspan="4" width="110px">主要信息</td>
                <td width="120px">機型</td>
                <td width="200px"></td>
                <td width="120px">機號</td>
                <td width="200px"></td>
            </tr>
            <tr>
                <td>部套</td>
                <td></td>
                <td>圖號</td>
                <td></td>
            </tr>
            <tr>
                <td>問題現象</td>
                <td colspan="3" class="aleft"></td>
            </tr>
            <tr>
                <td>引用文件</td>
                <td colspan="3" class="aleft"></td>
            </tr>
            <tr>
                <td>關鍵詞</td>
                <td colspan="4" class="aleft"></td>
            </tr>
            <tr>
                <td colspan="5" class="bdnoen"></td>
            </tr>
            <tr>
                <td>
                    <p>內容摘要</p>
                    <p>(100-200字)</p>
                </td>
                <td colspan="4" class="aleft"></td>
            </tr>
            <tr>
                <td>
                    附件
                </td>
                <td colspan="4" class="aleft"></td>
            </tr>
            </tbody>
        </table>
    </div>
    <p>MAN主機擴壓管配焊後變形問題解決案例(正文)</p>
    <p>一、案例背景</p>
    <p>二、原因調查分析</p>
    <p>三、解決方案</p>
    <p>四、綜合討論與建議(技術\管理歸零)</p>
</div>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章