PDF格式分析(三十七)Article thread

用途

某些类型的文档可能会包含逻辑连接,而这个逻辑顺序并不是物理顺序。比如:新闻报道可以从新闻通讯的第一页开始,然后转到一个或多个非连续的内页。

为了表示物理上不连续但逻辑相关的项目的序列,PDF文档定义了一个或多个Article(PDF 1.1)。 Article的顺序由article thread定义; 组成文章的各个内容项在线程上称为珠子(bead)。 用户可以通过点击从一个珠子到下一个珠子进行跳转。

表示

文档Catalog中可以定义的可选Threads条目(参见“文档目录”),该条目中定义了一个Thread词典组成的数组,用来表示文档Articles。Thread内的每个单独的bead应由bead字典表示。Thread字典的“F”条目应指定Threads中的第一个bead; bead通过“N”(下一个)和“V”(前一个)条目,构成一个在一个双向链表,将所有bead顺序链接在一起。 此外,对于出现 article beads 的每个页面,页面对象(Page)应包含一个B条目,其值是页面上的bead间接引用的数组,顺序是按照绘图顺序进行排列。

Thread词典中的条目

Key Type Value
Type name (可选)如果存在,则应为Thread。
F dictionary (必需;应为间接引用)Thread中的第一个bead。
I dictionary (可选)包含有关该Thread的信息的Thread信息字典,例如其标题,作者和创建日期。 该词典的内容应符合文档信息词典的语法(见“Document Information Dictionary文档信息词典”)。

bead词典中的条目

Key Type Value
Type name (可选)如果存在,则应为Bead。
T dictionary (对于Thread的第一个bead是必需的;对于所有其他珠子是可选的;该对象是间接引用表示)该bead所属的Thread对象。
N dictionary (必需;应为间接引用)Thread中的下一个bead。 在最后一个bead中,该条目应指第一个bead。
V dictionary (必需;应为间接引用)Thread中的上一个bead。 在第一个bead中,该条目应指最后一个bead。
P dictionary (必需;应为间接引用)表示此bead所在页面的页面对象。
R rectangle (必需)一个矩形,指定页面上此bead的位置。

例子:

Catalog 字典

494 0 obj                         % Catalog 字典
<<
/Pages 478 0 R
/Threads 495 0 R                  % Threads 简介引用
/Type/Catalog>>
endobj

Thread 数组

495 0 obj
[496 0 R 497 0 R]                 % Thread 数组
endobj

Thread 字典

496 0 obj                        
<<
/F 510 0 R                        % Thread中的第一个bead
/I 56 0 R                         % Thread信息字典
>>          
endobj
497 0 obj
<<
/F 524 0 R
/I 57 0 R>>          
endobj

Thread中的第一个bead词典

510 0 obj
<<
/N 511 0 R
/P 500 0 R
/R[44.8739 285.975 589.09 677.906]
/T 496 0 R
/V 512 0 R>>
endobj

Thread中的最后一个bead词典

512 0 obj
<<
/N 510 0 R
/P 26 0 R
/R[120.778 15.7763 579.065 177.132]
/T 496 0 R
/V 513 0 R>>
endobj

bead所在页面的页面对象

500 0 obj
<<
/Annots 501 0 R
/B[510 0 R 524 0 R 525 0 R 526 0 R]
/Contents[536 0 R 537 0 R 538 0 R 543 0 R 544 0 R 547 0 R 548 0 R 549 0 R]
/CropBox[0 0 612 792]
/MediaBox[0 0 612 792]
/Parent 478 0 R
/Resources<</ColorSpace<</CS0 531 0 R>>/ExtGState<</GS0 532 0 R>>/Font<</T1_0 527 0 R/T1_1 528 0 R/TT0 529 0 R/TT1 530 0 R/TT2 539 0 R/TT3 540 0 R/TT4 545 0 R/TT5 546 0 R>>/ProcSet[/PDF/Text]>>
/Rotate 0
/StructParents 0
/Type/Page>>
endobj

猜你喜欢

转载自blog.csdn.net/steve_cui/article/details/82735381