「文件 → 打印 → 打印为 PDF」是唯一可靠路径,因Navicat 16仅此路径触发Qt WebEngine矢量重绘与系统PDF驱动合成,其他导出入口均输出位图或空白页。
必须走「文件 → 打印 → 打印为 pdf」路径,其他任何导出按钮(包括右键菜单里的「导出为图片」或「导出为 pdf」)都会生成位图或空白页——这不是操作遗漏,是 navicat 16 的 pdf 渲染模块根本没把那些入口连到矢量引擎上。
为什么「打印为 PDF」是唯一可靠路径
Navicat 16 内置的 PDF 导出器实际是 Qt WebEngine 渲染快照 + 系统 PDF 打印驱动合成的结果。只有「打印」路径能触发完整矢量重绘流程;而「导出为图片」强制走屏幕分辨率渲染,缩放后文字糊成一片;「导出为 PDF」按钮在 16.x 中多数版本压根未启用矢量后端,点完直接弹空文件或报错 Failed to generate PDF。
- Windows 用户需确认系统级打印机中启用了
Microsoft Print to PDF,且在打印对话框里点击「打印机属性 → 高级 → DPI 设置」调至300或更高 - macOS 用户必须用系统自带的「另存为 PDF」,不能选第三方 PDF 打印机(如 Adobe PDF),否则会因字体权限被 SIP 拦截导致中文变
□□□ - 导出前务必关闭硬件加速:进入
Preferences → General,取消勾选Enable hardware acceleration,否则 WebEngine 在 macOS 12+/Win11 上常静默崩溃
导出前必须手动干预的三项布局动作
Navicat 16 的 ER 图打印引擎不识别逻辑画布,只按当前视口绝对坐标裁剪。哪怕你滚动看到了全部表,只要没在窗口里完整显示,就直接丢弃。
- 先执行
Layout → Organize Diagram(别用 Tree Layout,它对多层级外键支持差),让表自动散开、连线拉直 - 再手动拖动所有表,确保无一贴边——尤其右侧和底部至少留
2cm边距,否则 PDF 会被硬裁掉字段名和主键图标 - 右键画布 →
Canvas Properties→ 取消勾选Fit to canvas on zoom,防止缩放状态干扰导出精度
中文字体不乱码的关键设置顺序
Navicat 16.0–16.2 对中文字体 fallback 有硬编码缺陷:它会优先尝试 MS Sans Serif,而该字体不含中文字符集,结果就是满屏方块,且不报错。
- Windows:控制面板 → 字体 → 确认已安装
simfang.ttf(仿宋)或msyh.ttc(微软雅黑),然后进 Navicat →工具 → 选项 → ER图 → 字体,将「表标题」和「字段」两项均设为SimSun或Microsoft YaHei - macOS:打开「字体册」→ 停用所有第三方思源黑体变体 → 确保
/System/Library/Fonts/PingFang.ttc已启用 → Navicat 中对应项设为Heiti SC - 导出前最后一步:右键画布空白处 → 取消所有元素选中状态,否则 Navicat 只导出选中区域(极易忽略)
最易被跳过的环节是「导出前取消所有选中」——只要画布上有任意一个表处于高亮选中态,PDF 就只会输出那个表及其连线,其余全黑。这问题在上百张表的复杂模型里几乎必现,且毫无提示。



















