1. 程式人生 > >PDF格式分析(三十九)Collections 集合

PDF格式分析(三十九)Collections 集合

#簡介 從PDF 1.7開始,PDF文件可以指定符合本標準的閱讀器的使用者介面如何呈現檔案附件的Collections 彙集,這些附件與文件中的結構或內容是相關的,我們把這種呈現形式稱為行動式集合(彙集)。

行動式集合的目的是呈現、排序和搜尋(嵌入在PDF文件中)相關文件的集合,例如電子郵件存檔,照片集和工程投標集。 不要求集合中的文件具有隱含關係或甚至相似性; 但是,顯示相關文件的區別特徵可能有助於文件導航。

集合字典指定可移植集合的檢視和組織特徵。 如果該字典存在於PDF文件中,則符合本標準的閱讀器應將該文件作為行動式集合呈現。 EmbeddedFiles名稱樹指定檔案附件(請參見 “嵌入式檔案流”)。

當符合本標準的閱讀器首次開啟包含集合的PDF文件時,它將顯示初始文件的內容以及EmbeddedFiles名稱樹中存在的文件列表。 文件列表應包括集合模式指定的其他文件資訊。 初始文件可以是作為容器的PDF或嵌入文件中的其中之一。

初始文件中的頁面內容應包含幫助使用者理解集合中包含內容的資訊,例如標題和介紹段落。

包含集合的檔案附件應位於EmbeddedFiles名稱樹中。 該樹中的所有附件都在該集合中; 任何不在那棵樹上的附件都不屬於Collections。

#Collection集合詞典

##Collection集合詞典中的條目

Key Type Value
Type name (可選)如果存在,則應為Collection。
Schema dictionary (可選)collection schema 集合模式字典(見下表)。 如果不存在,符合本標準的閱讀器可以選擇已知存在於檔案規範字典中的有用的屬性作為預設值,例如檔名,檔案大小和修改日期。
D byte string (可選)一個字串,用於標識EmbeddedFiles名稱樹中的條目,確定最初應在使用者介面中顯示的文件。 如果D條目缺失或出錯,則初始文件應為集合字典所在的文件。
View name (可選)初始檢視。 (可選)初始檢視。 以下值有效:D:集合檢視應以詳細模式呈現,Schema字典中的所有資訊,以多列格式呈現。 此模式為使用者提供最多資訊。T:集合檢視應以tile模式顯示,集合中的每個檔案由一個小圖示和一個來自Schema字典的資訊子集表示。 此模式提供有關使用者檔案附件的頂級資訊。H:集合檢視最初應隱藏,符合本標準的閱讀器應為使用者提供通過一些明確的操作檢視集合的方法。預設值:D
Sort dictionary (可選)集合排序字典,指定集合中的專案在使用者介面中的排序順序。

collection schema 集合模式字典由可變數量的、有獨立集合欄位的字典組成。 每個集合欄位的字典具有由符合編寫者選擇的key,該key將用於將欄位與file specification(檔案規範)中的資料相關聯。

##collection field集合欄位字典中的條目

Key Type Value
Type name (可選)如果存在,則應為CollectionField。
Subtype name (必需)此字典描述的子型別。 詳情見下面 “集合欄位字典Subtype描述”
N text string (必需)欄位名稱。
O integer ((可選)使用者介面中欄位名稱的相對順序。欄位應由符合本標準的閱讀器按升序排序。
V boolean (可選)使用者介面中欄位的初始可見性。預設值:true。
E boolean (可選)一個標誌,指示是否應支援編輯欄位值。 預設值:false。

###集合欄位字典Subtype描述 此條目標識指定儲存在欄位中的資料型別。以下值標識集合項或集合子項字典中的欄位型別: S:文字欄位,欄位資料應儲存為PDF文字字串; D:日期欄位, 現場資料應儲存為PDF日期字串; N:數字欄位, 現場資料應儲存為PDF編號。 以下值標識檔案相關欄位的型別: F:欄位資料應該是嵌入檔案流的檔名,由檔案規範的UF條目標識(如果存在); 否則由檔案規範的F條目。 Desc:欄位資料應該是嵌入檔案流的描述,由檔案規範字典中的Desc條目標識。 ModDate:欄位資料應為嵌入檔案流的修改日期,由嵌入檔案引數字典中的ModDate條目標識。 CreationDate:欄位資料應為嵌入檔案流的建立日期,由嵌入檔案引數字典中的CreationDate條目標識。 Size:欄位資料應為嵌入檔案的大小,由嵌入檔案引數字典中的“大小”條目標識。

#集合排序字典 集合排序字典標識將用於對集合中的專案進行排序的欄位。 排序型別取決於資料型別:

  1. 如果指定了升序,則文字字串應從小到大以詞法順序排序。
  2. 如果指定了升序,則數字應從小到大按數字排序。
  3. 如果指定了升序,則日期應從最早到最新排序。

##集合排序字典中的條目

Key Type Value
Type name (可選)如果存在,則應為CollectionSort。
S name or array (必需)用於對集合中的專案進行排序的欄位的名稱。 如果值是名稱,則它標識父集合字典中描述的欄位。 如果值是陣列,則陣列的每個元素都應該是標識父集合字典中描述的欄位的名稱。 陣列形式應用於允許其他欄位參與排序,更具體地說,如果多個集合項字典對於在陣列中命名的第一個欄位具有相同的值,則陣列中命名的連續欄位的值應用於排序,直到確定唯一順序或直到命名欄位用盡為止。
A boolean or array (可選)如果值是布林值,則指定符合本標準的閱讀器是否應按升序(true)或降序(false)對專案進行排序。 如果值是陣列,則陣列的每個元素都應該是一個布林值,指定S陣列中相同索引處的條目是按升序還是降序排序。 如果A陣列中的條目數大於S陣列中的條目數,則應忽略A陣列中的額外條目。 如果A陣列中的條目數小於S陣列中的條目數,則應假定A陣列中的缺失條目為true。 預設值:true。

#示例 1、下面示例顯示了表示收件箱中的電子郵件的集合字典,其中集合中的每個專案都是電子郵件訊息。 實際的電子郵件訊息包含在檔案規範字典中。 與每封電子郵件關聯的組織資料在集合架構字典中描述。 大多數實際的組織資料(from,to,date和subject)都在集合項字典中提供,但是大小資料來自嵌入式檔案引數字典。

/Collection <<
/Type /Collection
/Schema <<
/Type /CollectionSchema
/from << /Subtype /S /N (From) /O 1 /V true /E false>>
/to << /Subtype /S /N (To) /O 2 /V true /E false >>
/date << /Subtype /D /N (Date received) /O 3 /V true /E false >>
/subject << /Subtype /S /N (Subject) /O 4 /V true /E false >>
/size << /Subtype /Size /N (Size) /O 5 /V true /E false >>
>>
/D (Doc1)
/View /D
/Sort << /S /date /A false >>
>>
174 0 obj
<<
/CompressedSize 175 0 R
/CreationDate 176 0 R
/Description 177 0 R
/FileName 178 0 R
/ModDate 179 0 R
/Size 180 0 R
/adobe:Order 181 0 R>>
endobj
175 0 obj
<</N(þÿS‹\)v„Y'\\)/O 6/Subtype/CompressedSize>>
endobj
176 0 obj
<</N(þÿR^úeåg)/O 5/Subtype/CreationDate>>
endobj
177 0 obj
<</E true/N(þÿ‹ôf㄀ )/O 1/Subtype/Desc>>
endobj
178 0 obj
<</E true/N(þÿT\ryð)/O 0/Subtype/F>>
endobj
179 0 obj
<</N(þÿOîe9eåg)/O 2/Subtype/ModDate>>
endobj
180 0 obj
<</N(þÿY'\\)/O 3/Subtype/Size>>
endobj
181 0 obj
<</N(þÿ˜z^)/O 4/Subtype/N>>
endobj

2、下面示例顯示集合專案字典和集合子專案字典。

/CI <<
/Type /CollectionItem
/from (Rob McAfee)
/to (Patty McAfee)
/subject <<
/Type /CollectionSubitem
/P (Re:)
/D (Let's have lunch on Friday!)
>>
/date (D:20050621094703-07’00’)
>>