1

我有下面的 html 来解析 dompdf 并生成一个 pdf 文件:-

    <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style type="text/css">
    td {
        margin-left: 15px;
        padding-left: 15px;
        border: none;
    }

    table {
        border: none;
    }
    </style>


    <style type="text/css">
    @font-face {
        font-family: "nmsyms";
        src: url("customfonts/nmsyms.eot");
    }

    @font-face {
        font-family: nmsyms;
        src: url(customfonts/NMSYMS__.TTF)
    }

    table {
        bgcolor: none
    }

    ;
    tr {
        bgcolor: none
    }

    ;
    td {
        bgcolor: none
    }
    ;
    </style></head><body><table align='center' width='100%' border='0' cellspacing='0'
            cellpadding='2'>
            <tr>
                <th colspan=5 align='left' height=35>
                <h3>Temporary Corrections &nbsp;</h3>
                </th>
            </tr>
            <tr>
                <th colspan=5 align='left'><b>
                1569(T)/13&nbsp;&nbsp;&nbsp;&nbsp; JAPAN - Hokkaidō West Coast. Kamui
                Misaki - Light.&nbsp;</b></th>
            </tr>
            <tr>
                <td colspan=4 align='left'>Source: <authority>Japanese
                Notice 11/5141(T)/13</authority>&nbsp;</td>
            </tr>
            <tr>
                <td align='left' colspan=4></td>
            </tr>
        </table></body></html>

您可以在上表的第二个 tr 中看到JAPAN - Hokkaidō West Coast. Kamui Misaki - Light.。有一个特殊的字符ō。这个字符正在转换为生成的 pdf 文件中的问号符号,但我不想要那个。它应该是这样的。

在网页上它按原样显示。

下面是我使用 dompdf 库的 php 代码:-

   $file= "files/2012_Week_40_info.html";
                 $NMtextpdfFile = 'nmtext.pdf';
                    $content = file_get_contents($file);
                    $dompdf = new DOMPDF();
                $dompdf->load_html($content, 'UTF-8');

                $dompdf->set_paper('A4', 'portrait'); //portrait,landscape
                $dompdf->render();
                $output = $dompdf->output();
                file_put_contents($NMtextpdfFile, $output);

我还有一些其他特殊字符,例如重音符号,但它们在生成的 pdf 中看起来不错

我认为这是字体系列问题。谁能告诉我我必须应用哪种字体来解决这个问题?

4

1 回答 1

0

首先,您的 CSS 中有一些语法错误。分号 (;) 不应位于大括号之外。分号终止样式定义中的各个声明。因此,您的样式表中的以下内容是错误的:

table {
  bgcolor: none
}

;
tr {
  bgcolor: none
}

它应该是这样的:

table {
  bgcolor: none;
}

tr {
  bgcolor: none;
}

我不确定(我必须做一些测试),但那些放错位置的分号可能会导致 CSS 解析错误。

此外,您似乎正在尝试使用@font-face 包含“nmsyms”字体。但是你实际上并没有在任何地方使用它。要使用字体(无论是来自您的系统还是使用@font-face 引用),您应该应用它,例如

body { font-family: nmsyms; }

但是对于您想要的字符,包含的 DejaVu 字体(在 dompdf 0.6.0 中)工作得很好。因此,您可以轻松删除 @font-face 并使用以下内容:

body { font-family: "DejaVu Sans", sans; }
于 2013-04-19T15:31:46.717 回答