-
1. Re: ISO 3200 - 7.5.8 Cross-Reference Streams
Test Screen Name Jul 9, 2014 2:31 AM (in response to tetleyforget)It's worth noting how ISO expect examples to be used. Contrary to what has become common practice!
Examples are there ONLY to illustrate what is in the main ("normative") text. They serve no role in defining how things work. So someone reading the standard can skip examples, and refer to them only to confirm their intepretation of the main text. But you can never do the opposite (read examples for primary knowledge).
So we have to ask ourselves, what is the example illustrating? In this case it is 7.5.8.3, Cross Reference Stream Data. I think that answers your questions, but let us know if not.
-
2. Re: Re: ISO 3200 - 7.5.8 Cross-Reference Streams
tetleyforget Jul 9, 2014 3:11 AM (in response to Test Screen Name)Hi. Thanks for coming back. The problem I'm having with this description is that it is referring to the example illustration of the stream object and cross reference stream on that page.
The specific numbers they refer to confuses things. For example, if you were to look at the page I'm referring to (P48) this line number of the object stream (15) ------- I'm stuck as to why this is the second element when the stream object number is 15? I just don't understand what it is referring to. I've pasted the whole page below.
EXAMPLE 4The following shows the same objects from the previous example stored in an object stream in a PDF 1.5 file, along with a cross-reference stream.
The cross-reference stream (see 7.5.8, "Cross-Reference Streams") contains entries for the fonts (objects 11 and 13) and the descriptor (object 12), which are compressed objects in an object stream. The first field of these entries is the entry type (2), the second field is the number of the object stream (15), and the third field is the position within the sequence of objects in the object stream (0, 1, and 2). The cross-reference stream also contains a type 1 entry for the object stream itself.
15 0 obj% The object stream
<< /Type /ObjStm
/Length 1856
/N 3 % The number of objects in the stream
/First 24% The byte offset in the decoded stream of the first object
% The object numbers and offsets of the objects, relative to the first are shown on the first line of
% the stream (i.e., 11 0 12 547 13 665).
>>
stream
11 0 12 547 13 665
<< /Type /Font
/Subtype /TrueType
...other keys...
/FontDescriptor 12 0 R
>>
<< /Type /FontDescriptor
/Ascent 891
...other keys...
/FontFile2 22 0 R
>>
<< /Type /Font
/Subtype /Type0
...other keys...
/ToUnicode 10 0 R
>>
...
endstream
endobj
99 0 obj% The cross-reference stream
<< /Type /XRef
/Index [0 32]% This section has one subsection with 32 objects
/W [1 2 2]% Each entry has 3 fields: 1, 2 and 2 bytes in width,
% respectively
/Filter /ASCIIHexDecode% For readability in this example
/Size 32
...
>>
stream
00 0000 FFFF
... cross-references for objects 1 through 10 ...
02 000F 0000
02 000F 0001
02 000F 0002
... cross-reference for object 14 ...
01 BA5E 0000
...
endstream
endobj
startxref
54321
%%EOF
NOTE 9The number 54321 in Example 4 is the offset for object 99 0.
-
3. Re: ISO 3200 - 7.5.8 Cross-Reference Streams
Test Screen Name Jul 9, 2014 4:47 AM (in response to tetleyforget)Refer to table 18 (7.5.8.3). The last 3 lines of this table describe what the type (2), object number (15) and meaning of the third field.
-
4. Re: ISO 3200 - 7.5.8 Cross-Reference Streams
Test Screen Name Jul 9, 2014 4:49 AM (in response to Test Screen Name)Also the paragraph following the table, explaining why the stream for object 15 might contain 15.
-
5. Re: ISO 3200 - 7.5.8 Cross-Reference Streams
tetleyforget Jul 9, 2014 5:13 AM (in response to Test Screen Name)Well done.. Thanks for that.
I suppose I thought they would refer to 'Fields' after they had been explained and the answer would be in the immediate region. Anyway, that solves it.


