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

可以借助福昕软件查看

相关推荐
思杰软件2 小时前
pdf发票免费拼图打印
pdf
E_ICEBLUE9 小时前
PDF 文件为什么打不开?常见原因与解决思路
pdf·c#·html
思杰软件10 小时前
PDF盖骑缝章
pdf
科技圈快讯10 小时前
免费AIPPT生成工具推荐:一键生成+实时预览,支持Markdown/PDF导入
pdf
六bring个六10 小时前
PDF压缩
pdf
codingPower1 天前
制作ftl文件通过FreeMarke生成PDF文件(含图片处理)
java·开发语言·pdf
拓端研究室1 天前
专题:2025年脑机接口产业蓝皮书:市场规模、专利技术、投融资与临床应用|附40+份报告PDF、数据、可视化模板汇总下载
pdf
日日行不惧千万里1 天前
孤勇者歌词拼音打印版PDF
pdf
小易吾1 天前
VISIO导出高清PDF有效方法
笔记·pdf
A0_張張1 天前
记录一个PDF盖章工具(PyQt5 + PyMuPDF)
开发语言·python·qt·pdf