從 AutoCAD 文字中移除文字格式,意思就是把從 MTEXT 實體、TEXT 物件,以及帶有 AutoCAD 屬性的 PDF 所複製的含格式字元,轉換成一般的純文字;而最可靠的瀏覽器工作流程,就是把剪貼簿的內容貼進原生的純文字欄位、統一換行字元,再把未格式化後的結果複製出來。AutoCAD 的編輯器會在其自身的物件內保留字型、顏色、堆疊分數與底線屬性,而這些屬性會跟著剪貼簿承載的資料一起傳送,因此任何看不懂 AutoCAD 內嵌格式的目標——例如程式碼註解、CMS 欄位、工單、試算表儲存格、提示字串或記事檔——只會顯示出原始的標記,或是套用錯誤的字型。在貼上邊界設置一個純文字欄位,就能讓瀏覽器只收到字元,接著進行一次可預期的轉換,除了把換行字元統一之外什麼都不動,這樣不管來源是 CRLF、CR 還是 LF,輸出結果都能保持一致。同一套做法也能處理從 Word、網頁或 PDF 複製過來的文字,因為這個工具從不檢查或重寫標記——它只是直接採用來源應用程式原本就選好的文字表示方式。

how to remove text formatting in autocad
how to remove text formatting in autocad

為什麼 AutoCAD 在複製時緊抓著含格式文字不放

當你在 AutoCAD 裡選取一個 MTEXT 或 TEXT 物件並按下 Ctrl+C 時,應用程式放進剪貼簿的會是一個結構化的承載資料,而不是原始的字形資料。Windows 剪貼簿可以同時夾帶多種表示方式——text/plain、rich text,以及 AutoCAD 專有的內部格式——下游應用程式會從中挑選它看得懂、且最豐富的那一種。Microsoft Word、Outlook,以及大多數 CMS 的所見即所得編輯器都會選擇 rich text 表示法,這會保留下 AutoCAD 附加的字型、顏色、底線、堆疊分數格式,以及功能變數代碼。即使是一個單行 TEXT 物件以這種方式複製,行為也一樣,因為格式存在於來源物件裡,而不是剪貼簿的行為裡。原生的瀏覽器 textarea 只接受 text/plain 表示法,會忽略 rich text 承載的資料。這就是為什麼純文字欄位是移除 AutoCAD 格式時「正確」的貼上邊界的技術原因。那些貼進 contenteditable 區域,再請 JavaScript「清理」DOM 的工具,所做的事情遠比它們所宣稱的還多,而且可能會引入原始剪貼簿承載資料從未包含的連結、圖片或事件處理常式。textarea 就不會發生這些事。

如何從 AutoCAD 文字中移除文字格式

每當你需要把 AutoCAD 裡乾淨的字元輸出到程式碼註解、電子郵件本文、工單系統,或任何不該看到字型與顏色中繼資料的目標時,就使用這個工作流程。整個步驟在同一個瀏覽器分頁內執行,內容也絕對不會上傳。

  1. 在 AutoCAD 中,選取你想要清理的 MTEXT、TEXT 或 ATTRIB 物件,然後按下 Ctrl+C。如果內容是多行的,而你只想取其中某一特定段落,可以打開 MTEXT 的就地編輯器,在裡面選取範圍,再只複製該段範圍。
  2. 在任何現代瀏覽器中開啟 Remove Text Formatting 工具。
  3. 在大型 textarea 內點一下,然後按下 Ctrl+V。瀏覽器只會從剪貼簿抓取 text/plain 表示法,因此 AutoCAD 附加的 rich text 字型、堆疊格式與顏色屬性都會被靜悄悄地忽略。
  4. 點擊 Create plain text。工具會把 CRLF 或單獨的 CR 換行字元統一為 LF,並在下方結果面板中呈現完全相同的字串。
  5. 在預覽中檢查換行、Tab、列表符號,以及任何逐字字元,例如度數符號、直徑符號,或作為替代字型使用的底線字元。如果哪裡看起來不對,就編輯輸入內容,然後再點一次。
  6. 點擊 Copy plain text,把完全相同的字串送入你的剪貼簿。瀏覽器在解析完成後才會顯示成功訊息,遵循標準的 Clipboard.writeText API
  7. 貼到你的目標位置,或點擊 Download TXT,把結果存成 plain-text.txt,這是一個使用 Blob 媒體類型 text/plain;charset=utf-8 建立的 UTF-8 檔案。

純文字轉換如何一步步運作

這個轉換刻意做得極簡:接收 textarea 的字串、進行驗證、統一換行字元,然後把結果交給剪貼簿或一個可下載的 TXT 檔。不做任何標記解析、不做任何 DOM 萃取、也不重寫任何字元——除了換行字元以外,所有字碼點都會逐字元保留。

  1. 把內容貼上或輸入到原生純文字欄位中,檢查來源應用程式實際提供了什麼。
  2. 點擊 Create plain text——工具會把 CRLF 或單獨的 CR 統一為 LF,並驗證其他所有字碼點。
  3. 在預覽中確認換行、Tab、一般空格、重複空格、空行、列表符號,以及逐字字元。
  4. 確認剪貼簿寫入成功後再複製,或下載完全相同的 UTF-8 TXT 結果。

Tab、一般空格、重複空格、空行、標點符號、表情符號、帶有腔調的字母,以及其他文字系統都會保留下來。工具不會修剪開頭或結尾、不會合併空白、不會重排段落、也不會改寫引號。逐字的 HTML 來源會保持逐字——如果輸入包含 <b>literal</b> 這幾個字元,結果就會包含同樣的標籤字元,而不是把它們解讀為粗體文字,或當成標記加以剝除。這個差別對從說明頁面或論壇貼文(裡面含有行內標籤)複製文字的 AutoCAD 使用者來說很重要,因為標記會在這趟旅程中存活下來,而不是被悄悄吞掉。

每個來源會送什麼到你的剪貼簿

因為 textarea 使用的是來源應用程式所提供的 text/plain,預覽就是工具實際收到內容的真實呈現。下表整理了常見 AutoCAD 及相鄰來源應該出現的典型表示法。工具本身並不會轉換其中任何一種;它只統一換行字元。

來源 典型的 text/plain 表示法
AutoCAD MTEXT(從圖面按下 Ctrl+C) 段落以換行表示,Tab 會保留,堆疊分數通常會被壓平為一般字元
AutoCAD 單行 TEXT(Ctrl+C) 單行不含斷行;Tab 與底線會作為逐字字元保留下來
AutoCAD ATTRIB(圖塊屬性) 值以純文字呈現;標籤與提示會被剝除
帶有 AutoCAD 屬性的 PDF(文字選取工具) 視覺上的間距常會在欄寬處把單字切斷;出現隨機的換行
Microsoft Word(含格式文字) 列表通常會塌縮;表格會變成 Tab 與空格;註腳會被移除
網頁(以純文字複製) 空白常會被合併;連結會被剝除為可見文字
聊天應用程式 僅含純文字;表情符號與換行會保留

如果貼上後的表格或列表在轉換中沒有如你所預期地存活下來,原因出在來源的表示法,而不是工具本身。在輸入欄位中調整文字後再次點擊 Create plain text,或在目的地需要特定格式時改從其他來源貼上。

限制、邊界情況,以及工具拒絕處理的時機

這個轉換有明確且固定的邊界。輸入上限為一百萬個 Unicode 字碼點——這個上限限制了驗算、繪製、Blob 建立、剪貼簿承載資料與記憶體用量,同時又能容納非常長的 MTEXT 匯出。工具會在不做截斷、不回傳部分結果的情況下,直接拒絕空輸入、格式錯誤的 UTF-16,以及超出上限的內容。格式錯誤的孤立代理項字碼單元會在輸出或下載前被拒絕,以保持 UTF-8 TXT 檔、可見預覽與剪貼簿契約三者一致。一般的 AutoCAD 文字與日常貼上操作幾乎都會產生格式正確的字串,因此被拒絕的情況通常代表剪貼簿來源損毀,而非例行作業出了問題。

既有的表情符號序列與輔助平面字元會保持不變。對已接受的輸入,唯一會進行的轉換就是明確的換行字元統一——包括 Tab、一般空格、重複空格、空行、標點符號、帶有腔調的字母,以及其他文字系統在內的所有其他字碼點,都會完整無缺地保留。不會進行任何隱藏的 Markdown 轉換、Unicode 正規化、智慧標點替換、編碼偵測,或特定語言的清理,因此從 AutoCAD 貼上的花式引號會保持花式引號,度數符號也會保持度數符號。這種可預期的特性,正是讓輸出結果在程式碼註解與結構化的 CMS 欄位中值得信賴的原因——在這些地方,一個不小心置換進來的智慧引號,可能會毀掉一個字串字面值或搜尋索引。

什麼時候該改用其他工具

Remove Text Formatting 工具不是空白字元移除器、文法編輯器、字元清理器、Markdown 轉換器、HTML-to-text 剖析器、OCR 服務、文件上傳器,也不是隱私消毒器。它不會移除個人資訊、追蹤文字、零寬字元,或以一般文字形式夾帶的惡意指令。如果你真的需要合併連續空格、刪除空行、剝除特定類別的標點,或在保留其他內容的同時移除表情符號,那麼另設有專門的搭配工具可執行這些工作。若要在 AutoCAD 圖面本身內部尋找與取代字串,應該使用產品內的 Find and Replace 工作流程——純文字轉換器處理的是剪貼簿上已有的內容,而不是 DWG 內部的物件。如果需要該圖面內工作流程的完整指南,請參考 How to Find and Replace Text in AutoCAD。只有在你想取得一份乾淨、可預期的 AutoCAD(或其他來源)放到剪貼簿上的文字副本,且除了換行字元的統一外每個字元都保留下來時,才該選用純文字轉換器。

相關閱讀:How to Remove Accents from Text Beyond Normalization