1. 程式人生 > >PDF格式分析(四十三)Interactive Form 互動式表單——Button Fields 按鈕

PDF格式分析(四十三)Interactive Form 互動式表單——Button Fields 按鈕

Button欄位(欄位型別Btn)表示使用者可以使用滑鼠操作的螢幕上的互動式控制元件。 按鈕欄位有三種類型:

  1. pushbutton 按鈕是一種簡單的互動式控制元件,可用來立即響應使用者輸入,和網頁的按鈕功能類似。
  2. check box 複選框在兩種狀態(開啟和關閉)之間進行切換,和網頁中複選框類似。
  3. Radio button 單選按鈕欄位包含一組相關按鈕,最多隻能有一個被選中,與網頁中的單選框類似。

對於Button欄位,Field flags中的值,bit 15,16,17和26指定了 Button 欄位的特有的行為。

表1 按鈕欄位的特有標誌

Bit position 名稱 含義
15 NoToggleToOff (僅限單選按鈕)如果設定,選擇已經被選中的按鈕時,無任何效。 如果清除,則被選中的按鈕將取消選中狀態,且不會選擇其他任何按鈕
16 Radio 如果設定,該欄位是一組單選按鈕; 如果清除,該欄位是一個複選框。 僅當 Pushbutton 標誌清零時才可以設定該標誌。
17 Pushbutton 如果設定,該欄位是Pushbutton。
26 RadiosInUnison (PDF 1.5)如果設定,單選按鈕欄位中使用相同值的一組單選按鈕將同時開啟和關閉; 也就是說,如果選中一個,則選擇了全部。 如果清除,則按鈕是互斥的(與HTML單選按鈕的行為相同)。

Pushbuttons

Pushbuttons欄位的欄位型別應為Btn,Pushbutton標誌(見表1)設定為1。 由於此類按鈕不保留值,因此,對應的Field 字典中沒有V和DV條目。

Check Boxes

複選框欄位可以有一個或多個複選框,當用戶使用滑鼠或鍵盤進行操作時,這些複選框在開啟和關閉這兩個狀態之間進行切換。 其欄位型別為Btn,其 Pushbutton 和 Radio 標誌(見表226)均應清除。 每個狀態可以具有單獨的外觀,該外觀應由欄位的 widget 註釋的外觀字典中的外觀流定義。 關閉狀態的外觀不是必需的,但如果存在,需要儲存在名稱Off對應的外觀字典中。 Yes 可以作為開啟狀態的名稱。

Field 字典中的V條目儲存了表示複選框外觀狀態的名稱物件,該名稱物件將用於從外觀字典中,選擇適當的外觀。

1 0 obj
<< /FT /Btn
/T (Urgent)
/V /Yes
/AS /Yes
/AP << /N << /Yes 2 0 R /Off 3 0 R>>
>>
endobj
2 0 obj
<< /Resources 20 0 R
/Length 104
>>
stream
q
0 0 1 rg
BT
/ZaDb 12 Tf
0 0 Td
(8) Tj
ET
Q
endstream
endobj
3 0 obj
<< /Resources 20 0 R
/Length 104
>>
stream
q
0 0 1 rg
BT
/ZaDb 12 Tf
0 0 Td
(8) Tj
ET
Q
endstream
endobj

從PDF 1.4開始,複選框和單選按鈕的欄位字典可以包含可選的Opt條目。 Opt條目是一個文字字串陣列,表示欄位中每個註釋的匯出值。

複選框和單選按鈕欄位特有的附加條目

Key Tpye Value
Opt array of text strings (可選;可繼承; PDF 1.4)該陣列中字串物件與 Kids 陣列元素一一對應,字串物件表示的是單個widget註釋的名稱
5 0 obj                                 % 單選按鈕 field 字典
<</DA(/ZaDb 0 Tf 0 g)
/FT/Btn
/Ff 49152
/Kids[27 0 R 17 0 R 22 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R]
/Opt[(h1)(h2)(h3)(þÿ	˜y㄀2)(þÿ	˜y㄀3)(þÿ	˜y㄀1)(þÿ	˜y㄀2)(þÿ	˜y㄀3)(þÿ	˜y㄀1)(þÿ	˜y㄀2)(þÿ	˜y㄀3)(þÿ	˜y㄀1)(þÿ	˜y㄀2)(þÿ	˜y㄀3)(þÿ	˜y㄀1)(þÿ	˜y㄀2)(þÿ	˜y㄀3)(þÿ	˜y㄀1)(þÿ	˜y㄀2)(þÿ	˜y㄀3)(þÿ	˜y㄀1)]
/T(Group1)>>
endobj

27 0 obj                            % Widget 註釋字典,屬於 名稱為 Group1 單選按鈕組中的第一個按鈕
<<
/AP<</D<</0 215 0 R/Off 216 0 R>>/N<</0 213 0 R/Off 214 0 R>>>>
/AS/Off
/BS<</S/I/W 1>>
/F 4
/MK<</BC[0.0]/BG[1.0]>>
/P 15 0 R
/Parent 5 0 R
/Rect[64.402 713.086 81.4686 738.021]
/Subtype/Widget
/Type/Annot>>
endobj

在這裡插入圖片描述

Radio Buttons

單選按鈕欄位是一組相關按鈕。 與複選框一樣,單個單選按鈕有兩種狀態:開啟和關閉。 單個單選按鈕可能無法直接關閉,而只能通過其他按鈕開啟而關閉。 通常,一組單選按鈕(作為單個單選按鈕欄位的子節點的註釋)中,處於開啟狀態單選按鈕只能有一個; 選擇任何一個按鈕會自動取消其他按鈕的開啟狀態。

當欄位中的存在多個單選按鈕具有相同的開啟狀態,並且設定了RadiosInUnison標誌時,開啟其中一個按鈕會開啟所有按鈕。

單選按鈕欄位的欄位字典中的Kids條目包含一組 widget 註釋,表示集合中的各個按鈕。 父欄位的V條目包含一個名稱物件,該名稱物件對應於當前處於開啟狀態的子欄位的外觀狀態; 此條目的預設值為Off。

與複選框欄位一樣,單選按鈕欄位可以使用欄位字典(PDF 1.4)中的可選Opt條目來定義其組成單選按鈕的匯出值,該值使用Unicode(UTF-16BE)編碼。