飞碟:中文字符呈现为PDF格式的框

时间:2015-08-14 06:53:51

标签: pdf-generation flying-saucer

当我使用Flying Saucer转换带有中文字符的html页面时。中文字符显示为如下框

enter image description here

我尝试了两种方法:在此答案Flying Saucer font for unicode characters中使用css并使用此答案Flying Saucer iTextPDF Chinese Fonts中的代码,但它们不起作用。有没有人有其他建议?

我已在元标记中声明了UTF-8字符集,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html language="en">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">   </meta>
<link rel="stylesheet" type="text/css" href="file:///opt/template/employer.css"/>
<link rel="stylesheet" type="text/css" href="file:///opt/template/style.css"/>
<link rel="stylesheet" type="text/css" media="print" href="file:///opt/template/print.css"/>
</head>

以下是中文字符的相关部分:

<tbody><tr>
                                        <td align="left" width="150" valign="top">
                                            Name
                                        </td>
                                        <td align="left" width="305" valign="top">
                                            <label id="candidateName">VU DINH THE / 你好</label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="left" width="150" valign="top">
                                            Gender/Status
                                        </td>
                                        <td align="left" width="305" valign="top">
                                            <label id="gender">Female</label> / <label id="status">Single
</label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="left" width="150" valign="top">
                                            Date of Birth/Age
                                        </td>
                                        <td align="left" width="305" valign="top">
                                            <label id="dob">12 Sep 1985</label> / <label id="age">30</label>
                                        </td>
                                    </tr>

print.css的内容:

@font-face {
    font-family: Arial Unicode MS;
    src: url('file:///opt/template/arialuni.ttf');
    -fs-pdf-font-embed: embed;
    -fs-pdf-font-encoding: Identity-H;
}

1 个答案:

答案 0 :(得分:5)

用空方块或矩形替换字符通常意味着该字符未在字体文件中定义,系统也找不到绘制它的信息。

在这种情况下,HTML和CSS代码是正确的,但arialuni.ttf文件不完整。

作为参考,arialuni.ttf应为~23 MB。