Navicat 不支持自动分页,导出的 ER 图为整张矢量画布,打印分页由外部工具控制;需手动设置画布尺寸(2480×3508 px)、执行 Organize Diagram 布局、启用系统中文字体,并导出为 PDF 后以“实际大小”横向打印,才能避免截断与失真。
navicat 本身不支持“自动分页”——它导出的 er 图是一整张矢量画布,打印逻辑由操作系统或 pdf 查看器控制,不是 navicat 内置能力。想让大型 er 图在打印时一页一表、不截断、不失真,必须绕过默认渲染路径,手动干预画布、布局与导出参数。
为什么直接“打印为 PDF”会截断或缩放失真
这是 DPI、画布尺寸和物理纸张三者没对齐导致的。Navicat 渲染基于屏幕像素(比如默认画布宽 5000px),而 A4 纸横向实际可容纳宽度约 2480px @ 300dpi。常见错误现象包括:
-
Adobe Acrobat打印时选“适应页面” → 连线变细、文字糊成一片 - 导出
PNG后放大打印 → 锯齿严重、字段看不清 - macOS 预览中导出 PDF 再打印 → 右侧表被硬切掉
根本原因:Navicat 不做物理尺寸换算,只按当前视图快照导出。解决的关键是提前把画布“压”到接近 A4 比例范围内。
导出前必须做的三件事:Canvas Size、Layout、Font
缺一不可,顺序不能错:
- 先调画布:
Layout → Canvas Size → Custom,设为2480 × 3508(A4 横向 @ 300dpi),避免默认超宽画布撑爆打印区域 - 再执行布局:
Layout → Organize Diagram(别用 Tree Layout,它对多环状关系易崩),确保连线不交叉、表不重叠 - 最后确认字体:
右键画布 → Options → Use system font for labels,Windows 要装simsun.ttc,macOS 要启用NotoSansCJK.ttc,否则中文变方块
怎样实现“一页一表”效果(非真分页,但可靠)
Navicat 没有「每页一个表」开关,所谓“自动分页”其实是利用 PDF 查看器对大面积空白的识别能力。实操要点:
- 在模型编辑器中,手动拖动每个表,使其垂直间距 ≥
3508px(即一页高度),中间留白足够大 - 导出格式必须选
PDF(不是 PNG/JPEG),PDF 保留矢量信息,打印时缩放才不丢质 - 打印时,在系统对话框中关闭
缩放以适应纸张,勾选实际大小,方向选横向 - 如果仍分页不准,说明空白不够——此时不如放弃 Navicat,改用
File → Export → Export ER Diagram as SQL,再用 Python +graphviz生成带subgraph的 Mermaid 或 DOT,每张子图强制独立一页
真正麻烦的不是操作步骤,而是 Navicat 把“画布”和“打印边界”当成两套独立系统处理。你调了 Canvas Size,它不自动重排;你用了 Auto Layout,它导出时不保证拓扑稳定;你设了中文字体,旧版驱动可能根本不读取。这些细节不逐个验证,PDF 打出来永远是半截表加乱码。



















