mupdf加载PDF显示中文乱码

现象

加载PDF显示乱码,提示非嵌入字体

bash 复制代码
 non-embedded font using identity encoding

调式

在pdf-font.c中加载字体

调试源码发现pdf文档的字体名字居然是GBK,估计又是哪个windows下写的pdf生成工具生成pdf

字体方法:

c 复制代码
static pdf_font_desc *
load_cid_font(fz_context *ctx, pdf_document *doc, pdf_obj *dict, pdf_obj *encoding, pdf_obj *to_unicode)

具体加载

c 复制代码
 pdf_to_name(ctx, pdf_dict_get(ctx, dict, PDF_NAME(BaseFont)));

解决

转码发现是宋体,简单判断转换下

c 复制代码
  unsigned char utf8SimSun[]={0xe5,0xae,0x8b,0xe4,0xbd,0x93};
  unsigned char gbkSimSun[]={0xcb,0xce,0xcc,0xe5};
cpp 复制代码
     if(0 == memcmp(basefont,utf8SimSun,sizeof(utf8SimSun))){
             fz_warn(ctx, "basefont:宋体UTF8");
             basefont = "SimSun";
        }
        if(0 == memcmp(basefont,gbkSimSun,sizeof(gbkSimSun))){
            fz_warn(ctx, "basefont:宋体GBK");
            basefont = "SimSun";
        }

PDF字体查看

可以借助福昕软件查看

相关推荐
huaweichenai7 天前
spring boot操作PDF
java·spring boot·pdf
开开心心就好7 天前
批量提取PDF中的图片,直接导出原图
前端·javascript·支持向量机·智能手机·pdf·html·启发式算法
泡海椒8 天前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
泡海椒9 天前
jquick-pdf 表格实战:动态数据 PDF 报表生成
java·开发语言·pdf
泡海椒9 天前
jquick-pdf 表格行列尺寸控制实战:单元格合并的可行边界
java·开发语言·pdf
java_logo10 天前
Docker 部署 Gotenberg 完整教程:Compose 搭建文档转 PDF API
docker·pdf·chromium·libreoffice·文档转换·轩辕镜像·gotenberg
泡海椒10 天前
jquick-pdf 防止 PDF 内容分页断裂:keepTogether 属性妙用
java·开发语言·pdf
泡海椒10 天前
jquick-pdf 文本元素实战:段落、行内文本、制表符用法详解
java·开发语言·pdf
SamChan9011 天前
Python 处理小语种 PDF 的编码坑:重音字符、连字与 (cid:xx) 乱码的解决方案
python·ai·pdf·机器翻译
微咣科技11 天前
平台化工业AI再突破|大捷智能携手岚图汽车,打造车身焊装智能设计行业标杆
pdf·音视频