Navicat 15 不支持直接导出 PDF,其“打印为 PDF”依赖系统字体渲染且不嵌入字体,中文乱码需从系统字体安装与默认设置两端解决;稳定方案应绕过打印,改用 Report Designer、HTML 转 PDF 或命令行导出。
navicat 15 不支持直接导出数据为 pdf —— 所谓“导出 pdf”本质是调用系统打印功能,字体显示问题必须从系统级和 navicat 渲染逻辑两头堵。
为什么 File > Print > Save as PDF 后中文变方块或乱码
Navicat 15 的打印模块不嵌入字体,也不做子集化,而是依赖系统字体渲染引擎。它会尝试调用默认无衬线字体(如 MS Sans Serif),但该字体不含中文字符集,一遇到中文就 fallback 到缺失状态,最终显示为空白方块或乱码。
- Windows 用户:必须确保
simfang.ttf(仿宋)、msyh.ttc(微软雅黑)已安装在C:\Windows\Fonts,且不是仅用户级安装 - macOS 用户:需将
NotoSansCJK.ttc拖入「字体册」并设为「所有用户启用」,不能只勾选「仅此用户」 - Linux 用户:确认已安装
fonts-wqy-microhei或fonts-liberation,且 Navicat 是以常规方式(非 Snap)启动,否则字体路径不可见 - 临时验证法:把查询结果里的中文字段名、值全替换成英文,再走一遍 Print → Save as PDF;若正常,则 100% 是字体问题
Navicat 15 中如何强制指定中文字体用于打印输出
它没有「导出设置里配字体库」这个入口——Options → Fonts 里的字体仅影响界面和结果集显示,对打印路径无效。真正起作用的是两个隐藏动作:
- 在结果集窗口聚焦状态下,按
Ctrl+P(Windows)或Cmd+P(macOS)呼出系统打印对话框,此时系统会读取当前桌面环境的默认中文字体设置 - Windows 上若仍乱码,进「控制面板 → 字体 → 字体设置」,将「中文字体默认为」手动设为
SimSun或Microsoft YaHei,重启 Navicat - macOS 上打开「系统设置 → 通用 → 字体」,确认「用于拉丁文的字体」和「用于东亚文的字体」都指向 Noto Sans CJK 或 PingFang SC
- 不要试图在 Navicat 的
Options → General → Interface Language里切语言来解决打印乱码——那是改 UI,不是改打印渲染
比改字体更稳的替代方案:绕过打印路径
如果项目需要稳定交付带中文的 PDF 报表,别硬刚 Navicat 15 的打印链。它的设计目标就不是生成正式文档。
- 用
Report Designer(需 Navicat Premium):Tools → Report Designer → 新建报表 → 绑定查询 → 在字段属性里手动设字体为SimSun→ Preview 确认 → Export → PDF。这时字体才真正被嵌入 PDF 流 - 命令行导出(推荐高频场景):用 Python 脚本查数据库 +
pdfkit渲染 HTML 表格,中文字体通过@font-face显式加载本地simsun.ttc,完全可控 - 导出为 HTML 后转 PDF:File → Export → Format 选
HTML→ 用浏览器打开 → 打印为 PDF。Chrome / Edge 对中文字体支持远好于 Navicat 自带打印模块
Navicat 15 的 PDF 输出能力本质是“借壳”,字体问题从来不在软件设置里,而在操作系统字体注册表、渲染上下文、以及你是否意识到它根本没做字体嵌入这件事。











