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>