下午三点,甲方催着要PDF,我在页导航器里选中整套图纸,右键导出PDF,EPLAN直接弹了个报错出来:尺寸过小,后面还跟着一个很奇怪的参数名“boxsize”。当时我第一反应是图纸内容出了问题,是不是有哪个器件画得太小把页面撑爆了?结果查来查去找了一圈,发现跟图纸内容关系不大,真正的原因在页面属性、图框和导出设置这一条链路里。
这篇文章记录的就是这次完整的排查过程,从报错现场的还原,到EPLAN底层对导出包围盒的校验逻辑,再到逐步定位、修复和验证。如果你用的是EPLAN Electric P8(2.7到2024、2025版本都适用),也遇到过或者担心遇到“导出PDF报错 尺寸过小 boxsize”,那这篇内容可以直接当作排查手册用。即使你现在没碰到,也建议把最后一部分的预防清单存一下,这个坑一旦踩上,真不是重装能解决的。
1. 报错现场复盘:同样是“导出PDF”,这次卡在了半路
1.1 我当时的操作路径
先说清楚触发报错的操作,方便你对号入座。我的项目是个常规的电气控制柜图纸,几十页分布在不同的页结构里,用的是项目自带的图框模板。平时交付都是这么导的:在页导航器里选中需要导出的页面,右键点击,选择“导出” -> “PDF”,然后在弹出的导出对话框里确认一下“源”和“设置”,点击确定,几秒钟后PDF就生成了。
那天我几乎是一样的操作,唯一的区别是选中的页面数量比平时多一些,大概有四十多页,而且其中有几页是后补的,是从别的项目复制过来的。复制过来之后我没有逐页校验属性,想着图纸内容没错,格式应该也不会差到哪里去。结果正是这几页复制来的图纸里,有一页出了问题。
1.2 报错对话框的两种出现形态
不同版本、不同导出方式下,这个报错的表现形式不完全一样,我当时遇到的是第一种:
- 直接弹窗拦截:导出进行到大概三分之一的时候,弹出一个错误对话框,提示“尺寸过小”或者“size too small”,后面跟着boxsize的数值。点掉弹窗后,导出任务中止,PDF文件只生成了一部分,而且已生成的那几页内容也不完整。
- 写入批量导出日志:如果你是使用批量导出工具(工具 -> 批量导出)或者通过脚本来触发PDF生成,报错不会弹窗,而是以错误信息的形式写进导出协议日志里,日志中能看到类似“尺寸过小 boxsize=0.000001mm”这样的记录,然后对应页面的PDF文件不会生成。
我那次是第一种,弹了个窗,当时没截图,但文字记得很清楚。真正让我头疼的是,报错弹窗里的信息非常少,既没有指出是哪一页出错,也没说建议怎么改,只有“尺寸过小”和那个boxsize参数名。
1.3 为什么这个报错特别容易在项目快交付时出现
说实话,这个报错平时真不容易碰到,它有一个非常典型的触发场景:同一个项目里混入了不同来源的页面,或者某个页面被手工修改过几何参数但没同步刷新。项目交付前恰恰是页面来源最杂的时候,从旧项目复制页面、从外部模板导入页、从其他工程师那边并库,这些操作都会引入潜在的异常页面。
页面的几何参数在EPLAN里是跟着页面对象走的,不像Word里改个页面大小那么直观。复制过来的页面如果关联的图框不存在、页面格式没被正确识别,或者图框宏加载失败,EPLAN在导出时就会面临一个很尴尬的局面:它需要一个确定的物理尺寸来生成PDF,但页面提供的尺寸是无效的或者接近于零。这时候它就“聪明”地抛出一个尺寸过小的报错,告诉你导出没法继续了。
所以,这个报错本质上不是一个“画图错误”,而是一个“页面几何信息不完整”的系统性校验错误。定位的思路也应该跟着这条线走,而不是一头扎进图纸内容里去改器件、改连线。
2. 把“boxsize”翻译成人话:EPLAN导出PDF的底层检查逻辑
2.1 图纸页面的几何模型:图框、图形区域与导出包围盒
要理解这个报错,先要理解EPLAN的图纸页面到底是怎么组织几何信息的。EPLAN的每个页面,在底层是由三样东西共同定义出来的:页面格式、图框、页面上的图形对象。
页面格式决定的是这张纸有多大,比如A4横向还是A3横向,对应的是物理宽高;图框是画在页面边界内的表格框架,通常包含标题栏、图框线、公司信息栏,它也有自己的尺寸信息;页面上的图形对象就是你在页面中画的符号、连线、端子排、文本框这些内容。
当EPLAN执行导出PDF时,它做的第一件事并不是直接“打印”,而是先计算所有图形对象的最小外接矩形,这个最小外接矩形在底层的英文术语就是bounding box,对应到日志和报错信息里的boxsize。这个包围盒必须落在页面格式的实际尺寸范围内,PDF输出才有意义。
你可以在脑海里想象一下:页面格式是一张A4纸,图框是纸上面印刷好的表格线,包围盒是把你画的所有东西框起来的一个虚拟矩形框。正常情况下,这个矩形框应该在图框线以内,而且占据一定的面积。如果它小到了近乎为零的程度,EPLAN就会觉得这张页面没有有效内容,或者内容被压缩到了一个极度不合理的范围里。
2.2 导出时对包围盒尺寸的校验流程
EPLAN在导出PDF过程中,对页面尺寸的校验大致经历三个阶段。第一阶段是加载页面信息,读取页面属性里的格式、宽度、高度,同时加载图框文件;第二阶段是遍历页面上的所有图形对象,逐个计算坐标范围,最终汇总出整个页面的包围盒尺寸;第三阶段是拿这个包围盒和页面尺寸做比较,决定输出比例和页面拼接方式。
问题往往出在第二阶段和第三阶段的衔接处。如果某页图形对象的坐标出现异常,比如有一根线被画到了距离原点非常远的位置,或者对象的坐标值被写成了极小的数字化数值,EPLAN计算出的包围盒可能是两种极端结果:要么是一根“细线”——宽度正常但高度几乎为零;要么是一个“点”——宽度高度都极其微小,比如0.000001毫米级别。无论哪种,包boxsize都会小于EPLAN内部预设的合法阈值,于是导出进程就被中断了。
有一种情况也很常见,就是页面格式本身被改成了“特殊格式”,宽高被手动设置成了接近零的值。这种情况下,即使页面上的图形对象完全正常,包围盒相对于页面尺寸的比例也会超出合理范围,EPLAN同样会判定为尺寸过小。我后来在项目里查到的就是类似问题:那几页复制过来的图纸,页面属性里“格式”一栏是空的,“高度”和“宽度”显示为0。页面本身看起来有内容,但在导出器眼里,它是一张没有尺寸的白纸。
2.3 哪些参数直接决定boxsize
既然叫boxsize,那肯定有一系列参数在共同决定它。我梳理了一下,至少包括下面这几项:
- 页面属性中的“格式”:标准格式(A4横/A3横/A2横)会直接对应固定的物理尺寸,EPLAN按这个尺寸来创建包围盒的计算基准。一旦这里被改为“特殊”或空白,尺寸基准就丢了。
- 页面属性中的“高度”和“宽度”:只有在格式为“特殊”时这两个值才生效。如果手工填了0或者极端小值,导出时必报错。
- 页面上图形对象的坐标范围:符号、连线、端子、位图、图片区域的坐标值共同决定实际内容包围盒。任何一个对象被意外放到坐标原点附近且尺寸极小,都会拉低整体包围盒的有效面积。
- 图框宏的加载状态:图框本身也是一个带有尺寸信息的对象。如果图框文件缺失或加载失败,EPLAN可能用空值占位,导致页面有效区域变成0。
理解了这个逻辑之后,后续的排查方向就非常清晰了:要么把页面格式恢复正常,要么让页面上的对象坐标范围合理,要么保证图框能正常加载。这三个方向就是整个排查链路的骨架。
3. 嫌疑对象逐个过堂:一套完整的排查链路
3.1 第一排查点:页面属性里的图形尺寸与格式是否被改坏
既然问题是“尺寸过小”,第一个要查的肯定是页面自己的尺寸属性。操作路径是:在页导航器中选中出问题的页面,右键 -> 属性,在弹出的“页面属性”对话框里切到“格式”相关选项卡,核对“格式”下拉框、“高度”和“宽度”三个值。
正常情况下,格式应该是A4横、A3横这类标准值,高度和宽度只读显示。我当时排查的那几页里,有一页的“格式”显示的是空白,高度和宽度都是0。这个值明显是不正常的,因为EPLAN标准页面在创建时就带了格式,不可能自己变成0。
如果你的项目里也存在页面属性被改坏的情况,可以先在页导航器里通过“列配置”把“格式”和“高度”“宽度”列显示出来,对整个项目做一次快速扫描,而不是一页页点开看。这个操作能帮你快速锁定异类页面,尤其是从其他项目复制过来的页面,经常会在这里栽跟头。
3.2 第二排查点:图框是否加载成功
页面属性查完了,如果格式和尺寸都正常,下一个嫌疑人就是图框。EPLAN图框是项目级的资源,页面通过“图框”字段引用具体的图框文件。如果项目文件在拷贝、压缩、解压过程中丢了图框文件,或者图框名称被改动过,页面上仍然会保留图框的占位内容——标题栏区域可能会显示空白,但页面不会报“找不到图框”的硬错误,它只是静默地把图框尺寸当成无效值来处理。
判断图框是否加载成功,可以做一个很简单的测试:单独选中这一个页面,在页导航器里双击页面空白处,如果你的图框设置了标题栏字段,比如项目名称、页码这些,页面上的标题栏内容应该能显示出来。如果标题栏区域完全空白,或者显示的是“###”之类的占位符,那就说明图框加载出了问题。
另一个快速的验证方法是在导出PDF对话框里勾选“输出图框”选项后重新导出。如果勾选之前和之后导出的结果差别巨大,那十有八九是图框的问题。
3.3 第三排查点:导出设置的“源”和“区域”范围是否正常
页面本身没问题、图框也没问题,那就要看看导出设置本身。EPLAN的PDF导出对话框里有两个地方需要特别关注:一个是“源”选项卡里的页面筛选条件,另一个是“设置”选项卡里的纸张大小和输出范围。
源选项卡里如果设置了过滤条件,比如只导出某个类型的页面、只导出某个层级的页面,而过滤条件本身匹配到的页面数量很少,或者匹配到的页面中恰好有一个异常页,导出也会被异常页打断。我在第一次排查时没有重视页面列表,直接扫了整个项目,后来才发现报错是可以复现的——每次都在同一页中断,但那一页并不在过滤条件之外。
区域设置比源隐藏得更深。如果你在导出设置里不小心勾选了“区域导出”或者“仅导出激活的图框”,并且区域范围被设置成了一个很小的值,那么即使页面本身尺寸正常,实际导出时的包围盒也会被限制在这个小区域里。这同样会触发“尺寸过小 boxsize”的报错。我第一次排查时绕了很久,就是没往这里想。
3.4 第四排查点:批量导出模板里的配置陷阱
如果你是使用批量导出工具来生成PDF的,那还有个额外的陷阱:批量导出的配置模板。批量导出工具允许你保存一组导出配置,包括页面范围、文件格式、保存路径、缩放比例等。问题在于,配置模板在某些版本里是全局共享的,如果你之前手滑改过模板里的“纸张大小”字段,新项目调用同一个模板时就会继承这些异常值。
我当时虽然没有用批量导出,但我在排查过程中顺手检查了批量导出的模板配置,发现里面“纸张大小”一栏竟然是0x0毫米。结合我查到的资料,确实有同行在批量导出时也遇到过同样的问题,报错信息一模一样,最后就是因为模板里的纸张大小设置异常。如果你是批量导出的重度用户,建议直接把模板里所有相关配置截图保存好,出了问题好对照。
3.5 第五排查点:图层显示配置与项目缩放系数的干扰
前四个排查点都试过之后,如果还没定位,就得看一些更冷门的地方了。EPLAN的页面内容是按层组织的,同一个项目可以有不同的显示配置,不同的显示配置下各层的可见性不同。
假设页面上某条导线或者某个符号所在的图层在当前显示配置下被隐藏了,但导出设置里勾选了“按项目显示配置导出”,那么EPLAN在导出时会看到一个几乎空白的页面——可见对象太少,包围盒自然就小。如果你在页面上明明看到了内容,但导出时报尺寸过小,可以试着在导出设置里换一个显示配置,比如改成“全部图层可见”再试一次。
项目缩放系数是另一个容易被忽略的参数。在EPLAN中,项目的缩放系数是全局属性,正常情况下为1:1。如果项目里某些页面的比例被单独改成了1:100或者其他极端值,导出PDF时EPLAN需要做比例换算,换算结果如果落到了极小值区间,同样会触发报错。检查路径是:页导航器右键页面 -> 属性 -> 缩放系数,确认它和项目属性里的全局缩放系数一致。
4. 修复清单与参数建议:改哪里、改成什么
4.1 页面属性修复实操
排查完上面这些点,我的修复动作就比较明确了。先说页面属性异常的修复。
在“页面属性”对话框里,“格式”一栏如果显示的是空白,需要手动选择成一个标准格式,比如A4横向。选择完成后,“高度”和“宽度”会自动带出对应的物理尺寸,不需要手工填写。如果你的图框是竖版的,或者项目规范要求用A3,那就按项目实际情况选。
这里有一个细节:如果没有合适的标准格式,非要选择“特殊”格式手工填高宽的话,高度和宽度的最小值不要低于10毫米。虽然EPLAN理论上允许更小的值,但在实际导出中,小于10毫米的页面极容易被PDF生成器判死。这个数字不是官方硬性限制,而是我在多个版本里测试下来的可靠经验值。
修复完页面属性之后,最好把页面的“图框”字段也重新选一遍。方法是:页面属性 -> 图框 -> 从下拉框中选择项目里正确的图框名称。如果下拉框里的图框名称显示为“空”或者“未定义”,说明图框引用已经断了,需要先在项目数据里检查图框文件是否存在。
4.2 导出配置修复实操
页面属性修复好之后,再来看导出配置。打开导PDF对话框后,按下面这张表过一遍参数,基本可以把能踩的坑都堵上:
| 配置项 | 推荐值 | 需要警惕的异常值 |
|---|---|---|
| 源 -> 页面范围 | 在页导航器选好页面后再导出 | 空选或全选时未检查过滤条件 |
| 设置 -> 纸张大小 | 与页面格式一致 | 0×0、1×1这类极端尺寸 |
| 设置 -> 缩放比例 | 按页面实际尺寸1:1,或选“适合页面” | 极致小比例,如0.01 |
| 设置 -> 输出图框 | 勾选(如果页面上有权重图框) | 未勾选且同时开启了“仅导出激活的图框” |
| 设置 -> 显示配置 | 使用项目默认或“全部图层可见” | 当前工程视图里的隐藏图层过多 |
如果你在“设置 -> 纸张大小”一栏里看到的是0或者1这类数字,直接改成A4/A3等标准选项。如果那一栏根本不可编辑,说明是显示配置或者模板把它锁定了,去批量导出模板那边重新建一个干净模板。
4.3 批量导出与API调用场景的处理
用批量导出工具时报这个错,处理方式要加两步:第一步,打开批量导出工具,找到当前使用的模板,把“纸张大小”“页面范围和缩放比例”全部重置;第二步,也是最容易被忽略的一步,在批量导出的“导出文件路径”里检查是否有残留的中间文件。上次失败导出生成的半截PDF文件如果还锁在输出目录里,下一次批量导出时EPLAN可能因为文件冲突,把同一个页面又判定为无效页。
用API或者脚本导出PDF的话,逻辑也类似。EPLAN脚本里调用PDF导出的方法时,需要显式指定页面属性和导出配置对象,不能直接用一个空的参数对象。我见过不少脚本报“尺寸过小”的案例,最后都发现是因为脚本里没有传入有效的导出配置,EPLAN用了默认的空配置,而空配置里的纸张大小恰好是0。脚本调用时至少要把输出路径、页面列表、纸张大小这三个参数显式赋值。
4.4 修复后的验证步骤
完成上面这些修复之后,不要直接满项目导出,先做一个分级验证:
- 单页验证:在页导航器里只选中之前报错的那一页,右键导出PDF。如果这一页能顺利导出,说明页面本身已经正常了。
- 多页验证:选中之前所有需要导出的页面,再一次导出。这次仔细看导出协议,如果有警告信息,也要逐条确认。
- 全项目验证:最后再做一次全项目导出,确认所有页面都能正常生成PDF。
我在验证过程中发现一个比较有用的习惯:导出结束后不着急关掉“导出协议”窗口,先看一下里面有没有一页都没有的警告记录。很多导出问题都是先出警告后出错误,警告里面往往会带上页面的ID或页码,能帮你更快定位到具体是哪一页。
一个额外的验证技巧:导出PDF后,用PDF阅读器打开文件,检查每一页的页边距和标题栏位置。如果某一页的图框线在PDF里和页面边缘之间几乎没有留白,说明那页的缩放系数或纸张大小设置仍然有偏差,建议回到页面属性重新校准格式。
5. 同类导出报错怎么区分:避免下次再绕远路
5.1 报错现象对比:不同关键字指向不同根因
排查完“尺寸过小 boxsize”这个问题之后,我顺手把EPLAN导出PDF时常见的其他报错也整理了一下,方便以后遇到类似情况时第一时间缩小范围。
| 报错关键字 | 常见根因 | 优先排查位置 |
|---|---|---|
| 尺寸过小 / boxsize | 页面格式异常、图框缺失、导出区域过小 | 页面属性、图框引用、导出设置的区域 |
| 没有可导出的内容 | 页面筛选条件把所有页都过滤掉了 | 导出对话框“源”里的过滤条件 |
| 找不到图框 | 项目图框文件被删或名称被改动 | 项目数据里的图框库、页面图框字段 |
| 文件被占用 | 目标PDF被PDF阅读器打开 | 关闭正在预览的PDF文件 |
| 发生内部错误 | 项目数据损坏或版本兼容性问题 | 项目迁移、修复、重新保存页面 |
这些报错在弹窗文字上很好区分,但有时候报错信息会被EPLAN包装成笼统的“导出失败”,这种情况下就要去EPLAN的日志系统里翻原始信息。在帮助菜单里打开日志,或者找到项目临时目录下的日志文件,搜索“PDF”和“boxsize”两个关键字,能直接看到是哪一页哪个步骤挂掉的。
5.2 我的排查路径总结:一句话判断顺序
经历过这次踩坑之后,我总结出一个比较高效的排查顺序,遇到导出PDF问题可以按这个顺序走,能省不少时间:
第一步看页面属性,第二步看图框引用,第三步看导出设置,第四步看批量模板配置,第五步才去怀疑项目文件损坏。这个顺序不是随便排的,而是按照问题出现的概率从高到低排的。页面属性异常是最常见的,导出设置的坑是第二常见的,项目文件损坏反而是最小概率事件。很多人在导出报错后第一反应是重装EPLAN或者修复项目,但在这个“尺寸过小”的场景里,重装没有任何意义——问题在项目数据里,不在程序安装里。
我在实际排查中还有一个心得:不要单靠界面上的弹窗判断问题范围,一定要学会看导出协议。EPLAN的导出协议记录了每一页的详细执行情况,哪页成功、哪页失败、失败原因是啥都写得很清楚。界面弹窗只会告诉你“出错了”,协议文件才告诉你“哪里错了”。
5.3 交付前的预防清单:能把这个问题扼杀在摇篮里
既然这个坑踩了一次,就得想办法不再踩第二次。我给自己整理了一份交付前的PDF导出检查单,每次导图前按顺序过一遍,基本不会再碰到这个问题:
- 在页导航器里通过列配置把“格式”“高度”“宽度”三列显示出来,快速扫一遍全项目有没有格式空白的页面。
- 抽查几页复制的页面,看标题栏有没有正常显示项目名称,确认图框引用没有断。
- 打开PDF导出对话框,确认“设置 -> 纸张大小”和页面格式一致,不要信“上次能用就这次也能用”。
- 如果这次和上次导出的页面数量差异很大,先检查“源”里的过滤条件是否被改过。
- 给批量导出模板单独建一个“标准交付”模板,不去改动它,所有特殊需求用另一个临时模板处理。
此外,EPLAN版本更新时,也建议关注一下补丁说明,这类导出问题在后续版本里是会被修复的,但修复不代表你不触发,只要页面格式异常这个源头还在,报错就随时可能复现。
这次问题修完之后,我又把整个项目检查了一遍,把所有从外部复制过来的页面全都手动刷新了一遍页面属性和图框引用,然后重新导出了一次PDF。这次没有报错,输出的PDF每一页都干干净净,标题栏信息正确,图框线位置准确,甲方那边也没再催。
在实际使用中我还发现,这类问题往往不是单独一页出问题,而是好几页同时出问题,因为它们都来自同一个复制源。修好一页之后,一定要顺着线索把同源页面都检查完,否则你修了一页又导出一次,又会因为另一页同样的原因卡住。先用列配置把全项目的异常页面扫出来,一次性修完,再统一导出,效率会高很多。