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

可以借助福昕软件查看

相关推荐
有过~10 小时前
万兴PDF专家电脑绿色便携版
pdf
小小黑00716 小时前
vue---- H5页面 pdf,docx,excel文件预览&&下载功能
vue.js·pdf·excel·html5
慧都小妮子17 小时前
Spire.PDF for .NET【页面设置】演示:重新排列 PDF 中的页面
java·pdf·.net·spire.pdf·文档控件·文档管理
m0_748251521 天前
PDF在线预览实现:如何使用vue-pdf-embed实现前端PDF在线阅读
前端·vue.js·pdf
龙少95431 天前
【前端实现pdf导出】
前端·pdf
罗政1 天前
PDF书籍《手写调用链监控APM系统-Java版》第5章 插桩插件与bytebuddy字节码增强
java·pdf·linq
湛海不过深蓝1 天前
【js】记录预览pdf文件
开发语言·javascript·pdf
罗政1 天前
PDF书籍《手写调用链监控APM系统-Java版》第7章 插件与链路的结合:Tomcat插件实现
java·pdf·tomcat
罗政2 天前
PDF书籍《手写调用链监控APM系统-Java版》第2章 第一个Agent应用
java·python·pdf
小奥超人2 天前
pdf有密码,如何实现pdf转换word?
windows·经验分享·pdf·办公技巧·pdf加密解密