InDesign_Script_CS5_條件擷取文字
一、功能:
依據指定的頁數及上下座標(Y軸)範圍,及字體大小、字體顏色條件,將符合在範圍內的文字抽取成文字檔。
取2-3頁內,在Y1(282)、Y2(708)之間,文字大小為26Q的文字。
取2-3頁內,在Y1(282)、Y2(708)之間,文字大小為16Q的,顏色為綠色( C100+Y100 )的文字。
二、程式說明
1、註解及變數
上半部註解掉的部分,有其特殊意義,意在搭配NET的主程式,進行各項設定操作。另章說明之。
app.scriptArgs.set
setStart_y1與setStart_y2的意義,如下圖所示
設定2個布林變數,一個是紀錄是否有指定擷取文字限制大小。一個是指定是否指定文字顏色限制。
2、主程式
主程式的重心其實在自訂的函數 catchText()
其他是為了搭配.NET主程式所設計的防錯機制。如果單純只是在InDesign開啟的文件中,由指令碼面版點選執行的話,只要關注 catchText() 的內容即可。
3、函式catchText()
4、函式checkParas()
檢查程式所需的變數是否都有輸入值
5、函式removeAppColor
參考setFindPrefs_FillColor,為搭配該函式,需在應用程式層級建立相同色票之後,刪除之。
6、函式checkLocationStandard
檢查文框位置是否在Y1與Y2之間。
7、函式sortTextFrames
頁內文框,比對座標,以訂出擷取順序。
8、函式clearFindChangePrefs
設定搜尋選項之前,必須先乾淨搜尋及取代偏好的選項。
9、函式setFindPrefs_FontSize
設定字體大小的搜尋條件。
10、函式setFindPrefs_FillColor
在應用程式層級,建立相同名稱色票,並將之指定給搜尋條件。
11、函式findTexts
搜尋內文結果。要注意的是,由於是以內文為主要搜尋內容,因此假設第8頁的文框有串鍊到第9頁的文框,故實際上這兩個文框的內文是屬於同一個,因此擷取結果將歸屬於第8頁,而不會出現在第9頁。至於為何堅持要以內文為搜尋基礎,原因在一但文框有溢文狀態時,若不以內文為操作基礎,則任何不在文框顯示出的溢出物件,均將喪失。
12、函式writeStrToFile
把擷取的文字寫到文字檔。
13、函式formatDate2Str
將日期時間轉為指定格式字串,主要供給產出文字檔檔名使用。
14、函式getTfCollect
在指定的頁面範圍內,收集文字框物件。(若文框有一連串串鍊狀況,只取火車頭即可)。