当前位置: 首页 > news >正文

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

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

 

第二步:修改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();}// 循环执行命令行配置 setconfigforeach(auto var, cmdlist){QString cmd = var.replace("/usr/local/share/xpdf/chinese-simplified", chinessDir.path());setConfig(cmd); // 调用的接口}}elseqDebug() << "Warning[Chinese]: xpdfrc not exist![" << file.fileName() << "]";}elseqDebug() << "Warning[Chinese]: chinessDir not exist![" << chinessDir.path() << "]";

下载 ChineseSimplified

相关文章:

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

经查阅&#xff0c;是由于缺少中文字体包&#xff1a; 第一步&#xff1a;下载所需要的字体包 下载https://dl.xpdfreader.com/xpdf-t1fonts.tar.gz 包含下载中文字体包&#xff08;非嵌入字体&#xff09; http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gkai00mp…...

Java - AQS-CountDownLatch实现类(二)

前言 在Java中&#xff0c;AbstractQueuedSynchronizer&#xff08;简称AQS&#xff09;是一个用于实现同步器的抽象类&#xff0c;它为实现各种类型的同步器&#xff08;如锁、信号量等&#xff09;提供了基本的框架。AQS通过一个双向队列&#xff08;等待队列&#xff09;和…...

rsut基础

这篇文章是实战性质的&#xff0c;也就是说原理部分较少&#xff0c;属于经验总结&#xff0c;rust对于模块的例子太少了。rust特性比较多&#xff08;悲&#xff09;&#xff0c;本文的内容可能只是一部分&#xff0c;实现方式也不一定是这一种。 关于 rust 模块的相关内容&a…...

高压放大器和示波器的关系是什么

高压放大器和示波器是电子工程领域中常见的两种设备&#xff0c;它们在实际的电路设计、测试和分析中都扮演着重要的角色。下面安泰电子将从定义、功能、应用场景等方面为您介绍高压放大器和示波器的关系。 图&#xff1a;ATA-7000系列高压放大器 一、高压放大器的定义及功能 高…...

5个超实用视频素材网站,免费下载~

推荐几个高清无水印的视频素材网站&#xff0c;重点是可以免费下载使用&#xff0c;建议收藏&#xff01; 菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 可以称之为最大素材库&#xff0c;在这里你可以找到设计、办公、图片、视频、音频等各种素材。视频素材就有…...

【NLP模型】文本建模(1)(BoW、N-gram、tf-idf)

目录 一、说明 二、BoW模型产生发展 2.1 产生和历史 2.2 原理介绍 三、具体实现...

Java——网络编程套接字

目录 一、网络编程基础 1.1 为什么需要网络编程&#xff1f;——丰富的网络资源 二、什么是网络编程? 三、网络编程中的基本概念 3.2 请求和响应 3.3 客户端和服务端 常见的客户端服务端模型 四、Socket套接字 五、通信模型 5.1 Java数据报套接字通信模型 5.2 Java流…...

160套小程序源码

源码列表如下&#xff1a; AppleMusic (知乎日报) 微信小程序 d artand 今日更新求职招聘类 医药网 口碑外卖点餐 城市天气 外卖小程序 定位天气 家居在线 微信小程序-大好商城&#xff0c;wechat-weapp 微信小程序的掘金信息流 微信跳一跳小游戏源码 微票源码-demo 急救应急处…...

有效项目进度管理的 10 条规则

项目进度管理是项目中比较关键的方面之一&#xff0c;因为它将决定事情的进展方式、进展速度以及是否会取得进展。换句话说&#xff0c;它可以让你较好地控制项目&#xff0c;帮助你预测不可预测的情况&#xff0c;并使所有相关团队能够高效地协同工作。 以下是有效项目进度管…...

javaWebssh服装租赁店信息管理系统台myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh服装租赁店信息管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要 采用B/S模式开发。开发环境为TO…...

概率论:样本与总体分布,Z分数与概率

参考书目&#xff1a;《行为科学统计精要》&#xff08;第八版&#xff09;——弗雷德里克J格雷维特 数据及其样本的分布 描述一组数据分布 描述一组样本数据的分布 描述样本数据的均值和整体数据一样&#xff0c;但是样本标准差的公式除以了n-1&#xff0c;这里引入自由度的…...

【JavaSE】Java基础语法(十二):ArrayList

文章目录 1. ArrayList的构造方法和添加方法2. ArrayList类常用方法3. ArrayList存储学生对象并遍历 集合和数组的区别 : 共同点&#xff1a;都是存储数据的容器不同点&#xff1a;数组的容量是固定的&#xff0c;集合的容量是可变的 1. ArrayList的构造方法和添加方法 ArrayL…...

c++—封装:运算符重载、友元

1. 友元 &#xff08;1&#xff09;友元函数 ①是一种允许非类成员函数访问类的私有成员的一种机制&#xff1b;可以把一个函数指定为类的友元&#xff0c;也可以把整个类指定为另一个类的友元&#xff1b; ②友元函数在类作用域外定义&#xff0c;但需要在类体中进行声明&…...

【K8s】安全认证与DashBoard

文章目录 一、概述1、客户端2、认证、鉴权与准入控制 二、认证管理1、认证方式2、HTTPS证书认证 三、授权管理1、授权与RBAC2、Role 与 ClusterRole3、RoleBinding 与 ClusterRoleBinding4、案例&#xff1a;创建一个只能管理dev空间下Pods资源的账号 四、准入控制五、DashBoar…...

SpringMVC第七阶段:SpringMVC的增删改查(01)

SpringMVC的增删改查 1、准备单表的数据库 drop database if exists springmvc;create database springmvc;use springmvc; ##创建图书表 create table t_book(id int(11) primary key auto_increment, ## 主键name varchar(50) not null, ## 书名 author varchar(50) no…...

接口测试-Mock测试方法

一、关于Mock测试 1、什么是Mock测试&#xff1f; Mock 测试就是在测试过程中&#xff0c;对于某些不容易构造&#xff08;如 HttpServletRequest 必须在Servlet 容器中才能构造出来&#xff09;或者不容易获取的比较复杂的对象&#xff08;如 JDBC 中的ResultSet 对象&#…...

关于宝塔部署jar包和war包

文章目录 前言一、jar包部署二、war包部署1.maven如果打包不了使用命令打包2.安装Tomcat进行访问是否成功2.进入Tomcat目录进行配置war包 一、项目访问方法 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、jar包部署 1.其实jar包没什么讲的&…...

SpringMVC框架面试专题(初级-中级)-第十节

欢迎大家一起探讨&#xff5e;如果可以帮到大家请为我点赞关注哦&#xff5e; 截止到本节关于SpringMVC的内容已经更新完毕&#xff0c;后续会更新SpringBoot框架的面试题&#xff1b;大家在背题的时候切记不要死记硬背&#xff0c;需要理解 这是什么&#xff1f;有什么操作&a…...

PCIe TLB事务层详解过程

目录 1.What is TLP 2.PCIe 4种不同的事务 2.1.Memory事务 ​​​​​​​2.2.IO事务 2.3.Configuration事务 2.4.Message...

RK3588平台开发系列讲解(项目篇)YOLOv5部署测试

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、YOLOv5环境安装二、YOLOv5简单使用2.1、获取预训练权重文2.2、YOLOv5简单测试2.3、转换为rknn模型2.4、部署到 RK 板卡三、airockchip/yolov5简单测试3.1、转换成rknn模型并部署到板卡沉淀、分享、成长,让自己和他…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...