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

可以借助福昕软件查看

相关推荐
南风微微吹8 小时前
中级工作者历年真题及答案解析PDF电子版(2010-2025年)
pdf
luback13 小时前
前端把页面用PDF导出
前端·pdf·reactjs·html2canvas
asdzx6713 小时前
使用 Python 读取 PDF: 提取文本和图片
开发语言·python·pdf
优化控制仿真模型14 小时前
【社工】初级社会工作者历年真题及答案解析PDF电子版(2010-2025年)
经验分享·pdf
民乐团扒谱机15 小时前
【附完整代码】Python爬取古筝网曲谱图片一键生成PDF(下·PDF生成与GUI篇)
开发语言·python·pdf
玛卡巴卡ldf15 小时前
【Springboot9】将业务模块数据导出为PDF
pdf·springboot
优化控制仿真模型17 小时前
【26六级】英语六级历年真题及答案解析PDF电子版(2015-2025年12月)
经验分享·pdf
其实秋天的枫17 小时前
【社工】初级社会工作者历年真题及答案解析PDF电子版(2010-2025年)
经验分享·pdf
ComPDFKit20 小时前
Adobe vs ComPDF Conversion SDK V4.0.0 - PDF 转 Word 转档效果对比
adobe·pdf·格式工厂
开开心心就好20 小时前
支持批量处理的视频分割工具推荐
安全·智能手机·rust·pdf·电脑·1024程序员节·lavarel