我正在使用DomPDF和PHP来创建PDF文件。当文本是英文时,一切正常,但是当我想转换波斯文本时,输出被打破
这是包含波斯文和英文文本的示例文件:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
font-family: 'dejavu sans';
direction;rtl;
}
p {
font-size: 2em;
background: #eee;
padding: 1em;
}
h2 {
color: #999;
}
</style>
<style type="text/css"></style></head>
<body marginwidth="0" marginheight="0">
<div style="text-align:right">
<h2>Give You Glory</h2>
<br/>
Hadi
</div>
<br/>
هادی
</body></html>
这是输出PDF文件: http://i.stack.imgur.com/HOyMO.png
我该如何解决这个问题?
答案 0 :(得分:1)
http://i.imgur.com/UBdkNDx.png
要做到这一点,你必须使用不同的方式制作pdf而不是dompdf:wkhtmltox-php。
wkhtmltox-php是一个自定义的php命令,源自使用libwkhtmltox生成pdfs的源代码。安装它需要花费一些精力,但它会像上面那样呈现你的波斯语文本,并且比dompdf更快 。
这些说明假设linux或类似的os:
首先:安装wkhtmltopdf。 这里有大多数操作系统的预编译二进制文件:
http://wkhtmltopdf.org/downloads.html
第二:获取并编译并安装php-wkhtmltox。
cd /tmp/
wget https://github.com/mreiferson/php-wkhtmltox/archive/master.zip
unzip master.zip
cd php-wkhtmltox-master/
phpize
./configure
sudo make install
注意:如果您的计算机上没有安装phpize,则需要安装php dev软件包。 注意:如果您在配置或安装时遇到错误,则需要安装c编译工具,例如&#39; make&#39;和&#39; gcc&#39;
通过阅读make install
的输出,您将知道该模块所在的目录。通常它是:
/usr/lib64/php/modules/
第三:设置php了解这个模块 在你的php.ini文件中,在标题&#34; Dynamic Extensions&#34;
标题下添加以下行extension=phpwkhtmltox.so
第四步:运行ldconfig
$ ldconfig
第五步:重启apache(或者你正在使用的httpd)
最后:像这样使用它: 对于我的例子,我只是使用维基百科的国际象棋开放页面,因为我没有你的示例HTML的网址。
<?php
/**
* the config_array has lots of options but the two most important are:
* "out" this is the full path to where you want your pdf made
* "imageQuality" basically the same as jpg image quality. lower quality is slower, higher quality is a bigger file
*/
$config_array = array( "out" => "/tmp/pdfdocument.pdf",
"imageQuality" => 95);
/**
* the array of urls that are the input html for making your pdf. note that these are not files, but urls
* also note that this is an array of arrays keyed by "page"
*/
$htmls_array = array(array("page"=>"http://en.wikipedia.org/wiki/Queen's_Gambit_Declined"));
/**
* run the conver like so and your pdf file should be on disk
*/
wkhtmltox_convert('pdf', $config_array, $htmls_array);
?>
如果你看一下上面发布的截图,看起来像phpwkhtmltox可以正常工作。