我正在使用DOMPDF库创建PDF格式的发票。此文档可以是法语、俄语或英语,但我在打印俄语字符时遇到问题。首先,我尝试使用UTF-8编码,并将meta标记放在要转换的HTML页面的头部:
meta
wkyowqbh1#
如果您将使用DejaVu字体,则可以看到西里尔字符DejaVu TrueType字体已预装,默认情况下可为dompdf提供适当的Unicode字符覆盖。要使用DejaVu字体,请参考样式表中的字体,例如body { font-family:德贾武·桑斯;}(对于DejaVu Sans)。DOMPDF包括默认的DejaVu字体
$html = "<html><head><style>body { font-family: DejaVu Sans }</style>". "<body>А вот и кириллица</body>". "</head></html>"; $dompdf = new \DOMPDF(); $dompdf->load_html($html); $dompdf->render(); echo file_put_contents('cyrillic.pdf', $dompdf->output());
您也可以在dompdf_config.inc.php中设置默认字体的更改def
def("DOMPDF_DEFAULT_FONT", "DejaVu Sans");
nzrxty8p2#
问题是字体默认dompdf使用(即它没有所有的unicode字符,现在超过5000).通常arialuni.ttf是你需要的.你可以下载本地化俄语版本在http://chernev.ru/dompdf.rar {breaked link}更新链接:https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf
daolsyd03#
在html中,使用以下样式:
<style type="text/css"> * { /*font-family: Helvetica, sans-serif;*/ font-family: "DejaVu Sans", sans-serif; } </style>
vm0i2vca4#
如果其他答案都没有帮助,那么将Dompdf升级到7.0.0版本对我有帮助。
// generate pdf. $dompdf_options = apply_filters( 'yith_wcwl_dompdf_options', array() ); $dompdf = new Dompdf\Dompdf( $options ); $dompdf->set_option('defaultFont', 'dejavu sans'); $dompdf->loadHtml( $template ); $dompdf->setPaper( 'A4', apply_filters( 'yith_wcwl_dompdf_orientation', 'portrait' ) ); $dompdf->render(); $dompdf->stream( $wishlist->get_formatted_name() );
t5fffqht5#
下载arialuni.ttf在dompdf目录下运行php load_font.php 'Arial' arialuni.ttf,设置字体为arial可以正常工作;)
iqjalb3h6#
对我来说,上面的4个步骤没有解决这个问题。除此之外,dompdf将创建的pdf转换为ANSI(ISO)您需要在选项页http://domain.com/admin/settings/print/pdf禁用此功能勾选复选框使用dompdf的Unicode模式。这将强制创建UTF-8/Unicode格式的文件。请注意,默认情况下,Web设置会覆盖dompdf_config.inc.php中的设置。
lawou6xi7#
已注意到问题可能出在css-reset使用中,尤其是font:inherit;
font:inherit;
7条答案
按热度按时间wkyowqbh1#
如果您将使用DejaVu字体,则可以看到西里尔字符
DejaVu TrueType字体已预装,默认情况下可为dompdf提供适当的Unicode字符覆盖。要使用DejaVu字体,请参考样式表中的字体,例如body { font-family:德贾武·桑斯;}(对于DejaVu Sans)。
DOMPDF包括默认的DejaVu字体
您也可以在dompdf_config.inc.php中设置默认字体的更改def
nzrxty8p2#
问题是字体默认dompdf使用(即它没有所有的unicode字符,现在超过5000).通常arialuni.ttf是你需要的.你可以下载本地化俄语版本在http://chernev.ru/dompdf.rar {breaked link}
更新链接:https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf
daolsyd03#
在html中,使用以下样式:
vm0i2vca4#
如果其他答案都没有帮助,那么将Dompdf升级到7.0.0版本对我有帮助。
t5fffqht5#
下载arialuni.ttf在dompdf目录下运行php load_font.php 'Arial' arialuni.ttf,设置字体为arial可以正常工作;)
iqjalb3h6#
对我来说,上面的4个步骤没有解决这个问题。除此之外,dompdf将创建的pdf转换为ANSI(ISO)您需要在选项页http://domain.com/admin/settings/print/pdf禁用此功能
勾选复选框使用dompdf的Unicode模式。这将强制创建UTF-8/Unicode格式的文件。
请注意,默认情况下,Web设置会覆盖dompdf_config.inc.php中的设置。
lawou6xi7#
已注意到问题可能出在css-reset使用中,尤其是
font:inherit;