在飞碟问题上使用@font-face
using @font-face with flying saucer issue
我正在尝试使用飞碟 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();
我正在尝试使用飞碟 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();