經常有用戶會遇到為什么圖紙打印輸出成PDF的時候,打印預覽時文字顯示還是正常的,但打印出來后卻發現文字變寬了,在圖框之外?
其實這個問題之前的文章里講過,只是現象不一樣,打印預覽也是正常的,能顯示全部文字,但點確定打印成PDF后,打開PDF后發現一些文字,很多文字都消失了,是什么地方出了問題?如下圖所示。 打印效果 預覽效果為什么圖中有些文字能正常打印,有些文字卻無法正常打印呢?預覽正常說明圖層沒有設置成不打印,而為什么打印后會消失呢?
不同版本的CAD的PDF驅動對文字的支持不一樣,設置不同,表現出來的效果也不相同。有些圖紙在2014版打印沒有問題,但到了2016版打印卻出現問題,所以下面只能借網友的實際圖紙,將問題的原因和解決問題的方法給大家介紹一下?
一、為什么輸出PDF時文字會消失?
收到網友的圖后我在CAD上用內置的dwgto pdf的驅動試了一下,確實如此,現象很容易就重現了,并且很快地找到了問題。他這張圖紙的情況比較特殊,但后來發現遇到類似問題的人還真不少,雖然不同的圖紙可能原因不盡相同,但原因是類似的,下面就將將我分析問題的思路跟大家分享一下,希望對大家有幫助。打印完PDF后,我首先看哪些文字是打印出來的,哪些文字是沒有打印出來的,然后我在圖中分別選中了一個可以打印和一個不能打印的文字,打開屬性框(CTRL+1)。我們來看看他們有哪些共同屬性,哪些不同的屬性,如下圖所示。從屬性框中可以看出兩個文字是單行文字,圖層相同,文字樣式相同,只是寬度因子不同。其實從圖面上也可以看出來文字的寬度不同,而且一個邊界比較平滑,一個則能看到一些鋸齒。
CAD圖中為什么有的文字邊界顯示不平滑?
為了看到比屬性框更多的信息,我輸入LI(LIST)命令,進一步查看一下這兩個文字的參數,如下圖所示。從這里可以看到兩個文字的寬度因子分別是1和0.9,可以打印出來的是0.9,我嘗試將寬度因子為1的寬度因子改為0.9,這些字就能打印出來了。但我感覺這應該不是問題根源所在,而且也想不通為什么0.9就能打印出來,而1就打印不出來呢!在上圖中我還注意到一個細節,就是這個文字樣式的字體是simplex。字體名后面沒有帶shx,說明用的是操作系統的字體simplex.ttf,而不是CAD字體simplex.shx。跟CAD的simplex.shx字體類似,simplex也只有單字體字符,不包含漢字,哪些漢字是如何顯示出來的呢?輸入ST,打開文字樣式對話框,發現這個文字樣式真的很奇怪,如下圖所示。這個文字樣式設置的字體是simplex,“使用大字體”勾選框是灰的,而且右側“字體樣式”下拉列表被激活了,說明使用的是系統字體,這個字體不包括中文,國內幾乎沒有人這么設置字體。而圖中的中文只所以能顯示,是CAD采取了自動替換的策略,應該被替換成了宋體顯示了。我們選跟simplex類似的SHX字體試一下,就知道正常顯示是什么狀態。在字體名列表中選一種其他的SHX文件,然后在選回simplex.shx,如下圖所示。如果點“應用”按鈕使用這種設置并關閉文字樣式對話框,然后輸入RE命令重生成圖形,你會發現剛才那些漢字都變成了問號,這才是這種文字樣式設置下中文的正常狀態,如下圖所示。顯然這張圖的文字樣式的數據有錯誤,本身樣式設置是無法顯示中文的,但CAD的自動替換蒙蔽了我們,使我們想不到是文字樣式的問題。我將文字樣式修改成能顯示漢字的字體,例如直接在字體列表里選擇“新宋體”,或者勾選“使用大字體”后,大字體選擇hztxt.shx,然后再打印,就完全正常了,所有文字都可以正常打印了。
雖然這個問題解決了,這個里面還是有兩個疑問:1、為什么文字樣式會變成這樣?2、為什么之前寬度因子為0.9的可以打印出來,而寬度因子為1的卻打印不出來?對于問題1我也無法解釋得很清楚。從這位朋友的說明和文字樣式的名稱來看,這張圖是天正建筑繪制的圖紙,然后進行了轉換,可能在天正高版本轉天3文件時數據轉換導致了這種錯誤,CAD2007和之前版本格式之間相互轉換也會出現類似的問題。以前見過字體設置為宋體被解析錯導致漢字顯示不正確的狀況。國內之前我從來沒見過在文字樣式中用操作系統的simplex字體的,而且這張圖中字體替換成宋體后很多文字都超出了表格邊框,我猜測這張圖原始的字體設置應該是simplex.shx加上一種大字體,在轉存或轉換的過程中,simplex.shx被寫成simplex,后面的大字體自然就丟失了。這種文字樣式并沒有錯,所以修復圖紙也無法解決這個問題,必須手動解決。至于問題2我通過驗證確認了我的猜測。在CAD在打印輸出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驅動無論是否設置寬度因子,是否是操作系統字體,都會按照圖形輸出,打印預覽和打印效果應該是一致的。但在上面例子中的CAD,對于設置了寬度因子的操作系統文字,會轉換成圖形輸出,但寬度因子為1的文字則會按照文字輸出,也就是說打印預覽效果會保持一致。昨天哪位網友說在2014版打印正常,但到2016打印不正常,看來2014版跟2011版也是一樣的,但2016版卻不一樣了:設置了寬度因子的操作系統字體的文字會正常輸出成文字,但寬度因子參數被忽略了,因此打印后這些文字變寬跑到圖框外邊去了。
我在2018版里試了一下,操作系統的文字即使設置了寬度因子,打印后不僅保留了寬度因子,還保留了文字,如下圖所示。
在2018之前的版本SHX字體的文字都會被輸出成圖形。據CAD 2019版輸出PDF時還可以保留CAD的SHX字體,在重新輸入到CAD后也能保留字體,不過我暫時沒有裝。
打印PDF后文字寬度變化的原因肯定是文字是設置了寬度因子的操作系統字體,而且也和CAD版本和驅動有關,可以換一個CAD版本打印或者跟處理前一種問題一樣,在PDF驅動參數中設置將文字輸出成圖形。
小結
針對以上問題中打印時遇到預覽效果和實際效果不同的時候,最便捷的方法就是設置PDF打印選項設置為將所有文字轉換為幾何圖形,如果想知道問題的原因,可以將這些不正常的文字跟其他正常打印的文字比較一下,看看字體、寬度因子有什么不同之處,最后再確定是改字體還是改驅動設置。
2024-01-22
2024-01-19
2023-12-29
2023-11-20
2023-09-03
2023-03-23
2023-03-17
2022-10-14
2022-07-11
2022-07-04
2022-05-12
2022-05-07