为什么CAD输出PDF预览正常但打印后文字变宽或消失了?
上周有网友在群里问为什么图纸打印输出成PDF的时候,打印预览时文字显示还是正常的,但打印出来后却发现文字变宽了,跑到了图框外面,打印预览效果如下图所示。
打印效果如下图所示。
其实这个问题之前的文章里讲过,只是现象不一样,打印预览也是正常的,能显示全部文字,但点确定打印成PDF后,打开PDF后发现一些文字,很多文字都消失了,是什么地方出了问题?如下图所示。
为什么图中有些文字能正常打印,有些文字却无法正常打印呢?预览正常说明图层没有设置成不打印,而为什么打印后会消失呢?
不同版本的CAD的PDF驱动对文字的支持不一样,设置不同,表现出来的效果也不相同。有些图纸在2014版打印没有问题,但到了2016版打印却出现问题,所以下面只能借网友的实际图纸,将问题的原因和解决问题的方法给大家介绍一下?
一、为什么输出PDF时文字会消失?
收到网友的图后我在AutoCAD 2011版上用内置的dwg to pdf的驱动试了一下,确实如此,现象很容易就重现了,并且很快地找到了问题。
打印完PDF后,我首先看哪些文字是打印出来的,哪些文字是没有打印出来的,然后我在图中分别选中了一个可以打印和一个不能打印的文字,打开属性框(CTRL+1)。我们来看看他们有哪些共同属性,哪些不同的属性,如下图所示。
CAD图中为什么有的文字边界显示不平滑?
为了看到比属性框更多的信息,我输入LI(LIST)命令,进一步查看一下这两个文字的参数,如下图所示。
从这里可以看到两个文字的宽度因子分别是1和0.9,可以打印出来的是0.9,我尝试将宽度因子为1的宽度因子改为0.9,这些字就能打印出来了。但我感觉这应该不是问题根源所在,而且也想不通为什么0.9就能打印出来,而1就打印不出来呢!
这个文字样式设置的字体是simplex,“使用大字体”勾选框是灰的,而且右侧“字体样式”下拉列表被激活了,说明使用的是系统字体,这个字体不包括中文,国内几乎没有人这么设置字体。而图中的中文只所以能显示,是CAD采取了自动替换的策略,应该被替换成了宋体显示了。我们选跟simplex类似的SHX字体试一下,就知道正常显示是什么状态。在字体名列表中选一种其他的SHX文件,然后在选回simplex.shx,如下图所示。
显然这张图的文字样式的数据有错误,本身样式设置是无法显示中文的,但CAD的自动替换蒙蔽了我们,使我们想不到是文字样式的问题。我将文字样式修改成能显示汉字的字体,例如直接在字体列表里选择“新宋体”,或者勾选“使用大字体”后,大字体选择hztxt.shx,然后再打印,就完全正常了,所有文字都可以正常打印了。
虽然这个问题解决了,这个里面还是有两个疑问:
1、为什么文字样式会变成这样?
2、为什么之前宽度因子为0.9的可以打印出来,而宽度因子为1的却打印不出来?
对于问题1我也无法解释得很清楚。从这位朋友的说明和文字样式的名称来看,这张图是天正建筑绘制的图纸,然后进行了转换,可能在天正高版本转天3文件时 数据转换导致了这种错误,AutoCAD2007和之前版本格式之间相互转换也会出现类似的问题。以前见过字体设置为宋体被解析错导致汉字显示不正确的状 况。国内之前我从来没见过在文字样式中用操作系统的simplex字体的,而且这张图中字体替换成宋体后很多文字都超出了表格边框,我猜测这张图原始的字 体设置应该是simplex.shx加上一种大字体,在转存或转换的过程中,simplex.shx被写成simplex,后面的大字体自然就丢失了。这 种文字样式并没有错,所以修复图纸也无法解决这个问题,必须手动解决。
至于问题2我通过验证确认了我的猜测。在2011版的AUTOCAD在打印输出PDF时,如果文字使用的是操作系统的TTF字体,而且宽度因子是1,就会保留原有的字体和文字,在PDF文件中我们可以选中这些文字,而宽度因子不是1的,在输出PDF的时候则会转换为图形,再PDF中无法选中,如下图所示。
CAD输出PDF的流程可能是这样的:在输出成PDF文件时,宽度因子不是1的文字CAD先按错误的文字样式生成了图形数据写入了PDF文件,而宽度因子是1的文字则将文字内容和字体写入了PDF文件,而写入的字体是simplex,PDF查看器中能找到这个字体,但这个字体中根本就没有汉字,因此那些正常宽度的汉字无法显示。而打印预览跟图形窗口显示的流程类似,能显示的文字在打印预览中都能看到。
如果文字样式不支持中文,在多行文字中也会自动替换成宋体来显示中文,不过这种情况在打印输出成PDF的时候,文字是可以正常显示的。
当字体错误的时候,宽度因子不为1的文字反倒可以打印出来,宽度因子为1的文字反倒打印不出来。
不知道遇到这种打印PDF后文字消失的人是不是相同的原因,但按照上面的方法是可以找出问题的原因的:一个是检查字体,一个是检查宽度因子。
上面介绍了一种解决办法,就是将字体改成正常的中文字体,还有一种方法就是设置PDF打印参数。
具体方法如下:
在打印对话框中单击驱动名称后的“特性”按钮,在弹出的绘图仪配置管理器的树状列表中单击“自定义特性”,然后再到底部单击“自定义特性”按钮,打开PDF选项对话框,如下图所示。
不同版本PDF驱动的选项可能不完全相同,通常都有字体处理选项。取消勾选“捕获图形中使用的字体”,勾选下面的“将所有文字转换为几何图形”后确定,然后再打印输出,因为文字都作为图形来处理,就与字体和宽度比例无关了。
二、为什么打印出来文字宽度会变?
这种问题的原因很简单,就是使用了操作系统的TTF文字然后又设置了宽度因子。但CAD不同版本对设置了宽度因子文字的处理方式不同,比如在2007版,内置的PDF驱动无论是否设置宽度因子,是否是操作系统字体,都会按照图形输出,打印预览和打印效果应该是一致的。但在上面例子中的AUTOCAD 2011版,对于设置了宽度因子的操作系统文字,会转换成图形输出,但宽度因子为1的文字则会按照文字输出,也就是说打印预览效果会保持一致。昨天哪位网友说在2014版打印正常,但到2016打印不正常,看来2014版跟2011版也是一样的,但2016版却不一样了:设置了宽度因子的操作系统字体的文字会正常输出成文字,但宽度因子参数被忽略了,因此打印后这些文字变宽跑到图框外边去了。
我在2018版里试了一下,操作系统的文字即使设置了宽度因子,打印后不仅保留了宽度因子,还保留了文字,如下图所示。
在2018之前的版本SHX字体的文字都会被输出成图形。据说AUTOCAD 2019版输出PDF时还可以保留CAD的SHX字体,在重新输入到AUTOCAD后也能保留字体,不过我暂时没有装。
打印PDF后文字宽度变化的原因肯定是文字是设置了宽度因子的操作系统字体,而且也和CAD版本和驱动有关,可以换一个CAD版本打印或者跟处理前一种问题一样,在PDF驱动参数中设置将文字输出成图形,如下图所示。
小结
当打印PDF的时候如果遇到预览效果和实际效果不同的时候,最简单的方法即使设置PDF打印选项设置为将所有文字转换为几何图形,如果想了解问题的原因,可以将这些不正常的文字跟其他正常打印的文字比较一下,看看字体、宽度因子有什么区别,最后再确定是改字体还是改驱动设置。
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03