提问者:小点点

使用@font-face与飞碟问题


我正在尝试使用飞碟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,但不使用我想要的字体,知道问题出在哪里吗?

谢谢你。


共1个答案

匿名用户

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();