经查阅,是由于缺少中文字体包:
第一步:下载所需要的字体包
- 下载https://dl.xpdfreader.com/xpdf-t1fonts.tar.gz 包含
- 下载中文字体包(非嵌入字体)
http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gkai00mp.ttf.gz
http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gbsn00lp.ttf.gz
完整包含中文字体文件如下:
第二步:修改xpdfrc文件
1、打开xpdfrc,修改路径添加\”,这样时为了杜绝类似“C:\Program Files (x86)”包含中文的路径。
2、再xpdfrc中添加gkai00mp.ttf 和 gbsn00lp.ttf 。Xpdfrc中的内容如下:
#----- begin Chinese Simplified support package (2011-sep-02)
cidToUnicode Adobe-GB1 "/usr/local/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode"
unicodeMap ISO-2022-CN "/usr/local/share/xpdf/chinese-simplified/ISO-2022-CN.unicodeMap"
unicodeMap EUC-CN "/usr/local/share/xpdf/chinese-simplified/EUC-CN.unicodeMap"
unicodeMap GBK "/usr/local/share/xpdf/chinese-simplified/GBK.unicodeMap"
cMapDir Adobe-GB1 "/usr/local/share/xpdf/chinese-simplified/CMap"
toUnicodeDir "/usr/local/share/xpdf/chinese-simplified/CMap"
fontFileCC Adobe-GB1 "/usr/local/share/xpdf/chinese-simplified/gkai00mp.ttf"
fontFileCC Adobe-GB1 "/usr/local/share/xpdf/chinese-simplified/gbsn00lp.ttf"
#----- end Chinese Simplified support package
第三步:查阅XpdfWidget Class Reference说明,需要通过setConfig设置配置。
1、将ChineseSimplified目录同执行程序放在同一目录下。
2、在XpdfWidget类初始化时加载,并将xpdfrc文件
中的 /usr/local/share/xpdf/chinese-simplified 替换为程序当前运行目录,以获取正确路径。(这里简单测试,暂时这样处理,后续可根据实际需求优化)相关代码如下:
QDir chinessDir = QApplication::applicationDirPath() + "/ChineseSimplified/";
if(chinessDir.exists())
{
QFile file(chinessDir.path() + "/xpdfrc");
if(file.exists())
{
// 按行读取xpdfrc文件的内容
QStringList cmdlist;
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
while (!file.atEnd())
{
QByteArray line = file.readLine();
QString str(line);
cmdlist << str;
}
file.close();
}
// 循环执行命令行配置 setconfig
foreach(auto var, cmdlist)
{
QString cmd = var.replace("/usr/local/share/xpdf/chinese-simplified", chinessDir.path());
setConfig(cmd); // 调用的接口
}
}
else
qDebug() << "Warning[Chinese]: xpdfrc not exist![" << file.fileName() << "]";
}
else
qDebug() << "Warning[Chinese]: chinessDir not exist![" << chinessDir.path() << "]";
下载 ChineseSimplified