我现在正在理解PDF struckture,但是我对计算字符串的字节偏移量有点问题。对象的偏移量从文件开头到对象的索引处开始( 0 obj)。计算字节偏移量的问题
我有一个工作的Hello World PDF文件,但是当我数着偏移,我收到了不同势比外部参照表中的偏移。
如果有人理解这是怎么算的,请让我知道!
实施例:
0 6 OBJ外部参照:9我:17
0 1 OBJ外部参照:60我:72
0 4 OBJ外部参照:145我187
(我以“\ r \ n”(2)作为换行符)
%PDF-1.4
%%EOF
6 0 obj
<<
/Type /Catalog
/Pages 5 0 R
>>
endobj
1 0 obj
<<
/Type /Page
/Parent 5 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
/Contents 2 0 R
>>
endobj
4 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F1
/BaseFont/Helvetica
>>
endobj
2 0 obj
<<
/Length 53
>>
stream
BT
/F1 24 Tf
1 0 0 1 260 600 Tm
(Hello World)Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Pages
/Kids [ 1 0 R ]
/Count 1
>>
endobj
3 0 obj
<<
/ProcSet[/PDF/Text]
/Font <</F1 4 0 R >>
>>
endobj
xref
0 7
0000000000 65535 f
0000000060 00000 n
0000000228 00000 n
0000000424 00000 n
0000000145 00000 n
0000000333 00000 n
0000000009 00000 n
trailer
<<
/Size 7
/Root 6 0 R
>>
startxref
488
%%EOF
* PDF文件不正确* - 您给出的原因是使文件看起来可疑,但还不正确。 – mkl
PDF文件的最后一行应该是%% EOF,实际上不应该是2.虽然(像往常一样)Acrobat容忍这种事情。 –
KenS
虽然这个文件肯定是不正确的。 xref表示对象6 0位于偏移量9,这是%% EOF的开始,而不是'6 0 obj'行。我想你可以争辩说,由于评论被忽略,这是合法的,但它的头发分裂。该规范说,外部参照偏移应该指向'对象的开始'。这是让外部参照是正确的一种方法,如果Acrobat忽略了这样一个很好的区别,它根本不会让我感到意外。但是没有办法在小于64字节(甚至计算1字节换行符)的情况下得到1 0 obj,并且外部参照显示为60. – KenS