I see the following all the time and I just can't seem to find any reason for this:
%4 extended chars were here
26 0 obj
<</Linearized 1/L 165618/O 28/E 160858/N 1/T 165312/H [ 540 170]>>
39 0 obj
<</DecodeParms<</Columns 5/Predictor 12>>/Filter/FlateDecode/ID[<7B2B288DDC9D317F7D8371774B51C538><51EF5FB138E5AC44821CEBA03B8 6B240>]/Index[26 56]/Info 25 0 R/Length 82/Prev 165313/Root 27 0 R/Size 82/Type/XRef/W[1 3 1]>>stream
some stream data (obviously an xref stream)
The rest of the PDF follows.
...and here's the end of it:
So here's my question:
What is the point of the first startxref statement? Obviously at offset 0 is the header comment specifying the version.
I see this all the time and it has never made any sense to me.
Hard to tell, but is it just an update table?
Well the last one would be an "update" but... I don't understand the first one.
The second one points to offset 116 which is the offset of object "39 0" so that one makes sense since object 39 is an XRef stream.
The first one points to offset 0. There is no xref table at offset 0 so the presence of the first startxref statement makes no sense.
OK well.... I feel dumb now. Apparently I didn't ctrl+f enough when I was ctrl+f'ing through the PDF specification.
In Appendix F, F.2 Linearized PDF Document Structure, for linearized documents:
Part 3: First-page cross-reference table and trailer
0 %Dummy cross-reference table offset
% % EOF
Guess I answered my own question