InDesign_Script_CS5_條件擷取文字

InDesign_Script_CS5_條件擷取文字

一、功能:

依據指定的頁數及上下座標(Y軸)範圍,及字體大小、字體顏色條件,將符合在範圍內的文字抽取成文字檔。

 

image

取2-3頁內,在Y1(282)、Y2(708)之間,文字大小為26Q的文字。

image

image

取2-3頁內,在Y1(282)、Y2(708)之間,文字大小為16Q的,顏色為綠色( C100+Y100 )的文字。

image

 

二、程式說明

1、註解及變數

image

上半部註解掉的部分,有其特殊意義,意在搭配NET的主程式,進行各項設定操作。另章說明之。

app.scriptArgs.set

setStart_y1setStart_y2的意義,如下圖所示

 

image

設定2個布林變數,一個是紀錄是否有指定擷取文字限制大小。一個是指定是否指定文字顏色限制。

image

2、主程式

主程式的重心其實在自訂的函數 catchText()

其他是為了搭配.NET主程式所設計的防錯機制。如果單純只是在InDesign開啟的文件中,由指令碼面版點選執行的話,只要關注 catchText() 的內容即可。

image

3、函式catchText()

image

4、函式checkParas()

image

檢查程式所需的變數是否都有輸入值

 

5、函式removeAppColor

image

參考setFindPrefs_FillColor,為搭配該函式,需在應用程式層級建立相同色票之後,刪除之。

 

6、函式checkLocationStandard

image

檢查文框位置是否在Y1與Y2之間。

 

7、函式sortTextFrames

image

頁內文框,比對座標,以訂出擷取順序。

 

8、函式clearFindChangePrefs

image

設定搜尋選項之前,必須先乾淨搜尋及取代偏好的選項。

 

9、函式setFindPrefs_FontSize

image

設定字體大小的搜尋條件。

 

10、函式setFindPrefs_FillColor

image

在應用程式層級,建立相同名稱色票,並將之指定給搜尋條件。

 

11、函式findTexts

image

搜尋內文結果。要注意的是,由於是以內文為主要搜尋內容,因此假設第8頁的文框有串鍊到第9頁的文框,故實際上這兩個文框的內文是屬於同一個,因此擷取結果將歸屬於第8頁,而不會出現在第9頁。至於為何堅持要以內文為搜尋基礎,原因在一但文框有溢文狀態時,若不以內文為操作基礎,則任何不在文框顯示出的溢出物件,均將喪失。

 

12、函式writeStrToFile

image

把擷取的文字寫到文字檔。

 

13、函式formatDate2Str

image

將日期時間轉為指定格式字串,主要供給產出文字檔檔名使用。

 

14、函式getTfCollect

image

在指定的頁面範圍內,收集文字框物件。(若文框有一連串串鍊狀況,只取火車頭即可)。