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字体查看

可以借助福昕软件查看

相关推荐
XLYcmy12 小时前
pdf论文处理:CSV输出模式
数据库·python·pycharm·pdf·论文·csv·dify
SamChan902 天前
用Python+Requests批量翻译PDF:从脚本到调度
后端·python·microsoft·ai·pdf·机器翻译
SamChan902 天前
PDF翻译API的JWT签名鉴权与速率限制设计:安全实战指南
网络·安全·pdf
Web打印2 天前
gridreport导出后的pdf只支持①到⑨,然而⑩之后的不支持_gwj_20260811_122323.docx
pdf
AmyLin_20012 天前
PDF 脱敏技术【1】:PDF 脱敏不是盖黑框:为什么敏感信息仍能被复制,正确的保护方式是什么?
安全·pdf·sdk·脱敏·文档安全·pdf 脱敏·智能脱敏
denggun123452 天前
PDF解析 Mineru
pdf
10mAh2 天前
【PaddleOCR】扫描版 PDF 无法复制、RAG 检索为空怎么解决?——OCR 解析与版面还原实战
前端·pdf·ocr
慧都小妮子3 天前
PDF图片提取总“褪色“?Aspose.PDF 多层级提取能力详解
pdf·c#·.net·图片处理·文档处理·色彩空间
SamChan903 天前
PDF翻译中的并发控制:用Semaphore防止API限流与资源耗尽
java·jvm·pdf
ilvcn4 天前
在线 PDF 翻译工具实测:整份翻译保留表格版式,长文档处理方案
pdf