我正在尝试使用飞碟pdf库将html转换为pdf,但我应该拥有的字体有问题。似乎无法识别导入的字体。
在我的html代码下面:
<html>
<head>
<meta charset="utf-8" />
<title>My card - v_prenom v_nom</title>
<style>
p {
margin: 0;
font-family:'Poppins',Arial,Helvetica,sans-serif !important;
}
</style>
<link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900%26display=swap" rel="stylesheet" />
</head>
<body>
...
<td style="text-align:center;">
<p style="font-size:10px"> <strong>Card<br/>Test</strong></p>
</td>
...
</body>
...
我的java代码:
outputStream = new FileOutputStream(outputFolder);
ITextRenderer renderer = new ITextRenderer();
FileReader fr=new FileReader(path+data_in+"template.html");
BufferedReader br= new BufferedReader(fr);
StringBuilder content=new StringBuilder(1024);
String s;
while((s=br.readLine())!=null) {
content.append(s);
}
String html_string = content.toString();
renderer.setDocumentFromString(html_string);
renderer.layout();
renderer.createPDF(outputStream);
outputStream.close();
生成结果pdf,但不使用我想要的字体,知道问题出在哪里吗?
谢谢你。
Flying-saucer不支持Google字体使用的Web开放字体格式(WOFF)字体。
如果你想使用Poppins,你必须下载ttf
文件并将其包含在java代码中:
ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont("font/Poppins/Poppins-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
OutputStream out = new FileOutputStream(new File("so.pdf"));
renderer.setDocumentFromString(html);
renderer.layout();
renderer.createPDF(out);
out.close();