在飞碟问题上使用@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();