Xpdf 阅读器源码编译后查看文件中文乱码问题解决

经查阅,是由于缺少中文字体包:

第一步:下载所需要的字体包

  1. 下载https://dl.xpdfreader.com/xpdf-t1fonts.tar.gz 包含
  2. 下载中文字体包(非嵌入字体)

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

完整包含中文字体文件如下:

Xpdf 阅读器源码编译后查看文件中文乱码问题解决_第1张图片

 

第二步:修改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设置配置。

Xpdf 阅读器源码编译后查看文件中文乱码问题解决_第2张图片

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

你可能感兴趣的:(linux,运维,服务器,qt,c++)