制作我的第一个PDF有困难

制作我的第一个PDF有困难,pdf,Pdf,在过去的几个小时里,我一直在阅读PDF规范,这就是我想到的。但它不会在OSX预览中渲染: %PDF-1.3 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1>> endobj 3 0 obj << /Type /Page /Parent 2 0 R /Resources <<

在过去的几个小时里,我一直在阅读PDF规范,这就是我想到的。但它不会在OSX预览中渲染:

%PDF-1.3

1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj

2 0 obj
<< /Type /Pages /Kids [ 3 0 R ] /Count 1>>
endobj

3 0 obj
<< /Type /Page /Parent 2 0 R /Resources <<>> /MediaBox [0 0 500 500] /Contents 4 0 R >>
endobj

4 0 obj
BT
/F13 12 Tf (Hello World!) Tj 
ET
endobj

xref
0 5 
0000000000 65535 f
0000000010 00000 n
0000000059 00000 n
0000000119 00000 n
0000000221 00000 n

trailer 
<< /Size 5 /Root 1 0 R >>
startxref
267
%%EOF
%PDF-1.3
10 obj
>
endobj
20 obj
>
endobj
30 obj
>
endobj
40 obj
英国电信
/F13 12 Tf(你好,世界!)Tj
ET
endobj
外部参照
0 5 
0000000000 65535 f
00000000 100万n
000000005900000N
0000000 11900000n
0000000 221 00000n
拖车
>
起始外部参照
267
%%EOF

我确信这与我的文本对象有关,但我很难理解它。

经过几次更正后,以下内容将在xpdf 3.0上为我呈现

%PDF-1.3

1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj

2 0 obj
<< /Type /Pages /Kids [ 3 0 R ] /Count 1>>
endobj

3 0 obj
<< /Type /Page /Parent 2 0 R /Resources << /Font << /F13 5 0 R >> /MediaBox [0 0 500 500] >> /Contents 4 0 R >>
endobj

4 0 obj
<< /Length 46 >>
stream
BT
/F13 12 Tf 100 250 Td (Hello World!) Tj
ET
endstream
endobj

5 0 obj
<< /BaseFont /Helvetica /Encoding /MacRomanEncoding /Name /F13 /Subtype /Type1 /Type /Font >>
endobj

xref
0 6
0000000000 65535 f 
0000000010 00000 n 
0000000060 00000 n 
0000000119 00000 n 
0000000247 00000 n 
0000000343 00000 n 

trailer
<< /Size 6 /Root 1 0 R >>
startxref
453
%%EOF
%PDF-1.3
10 obj
>
endobj
20 obj
>
endobj
30 obj
>/Contents 4 0 R>>
endobj
40 obj
>
流动
英国电信
/F13 12 Tf 100 250 Td(你好,世界!)Tj
ET
尾流
endobj
50 obj
>
endobj
外部参照
0 6
0000000000 65535 f
00000000 100万n
00000000 600万n
0000000 11900000n
0000000 247 00000n
0000000343000000N
拖车
>
起始外部参照
453
%%EOF
事情,我需要改变:

  • /F13
  • 在内容流中添加了
    100 250 Td
    。需要设置当前位置
  • 已更正
    4 0 R的格式
    。注意
    结束流
    标记
  • 对外部参照的更正。尤其是第一行
    0000000000 65535 f
    是一个虚拟自由对象。第一个真实对象显示为第二个条目

+1--干得好。几乎完美——但为了完美,您必须更改:
startxref
值不正确<代码>/Size应为
4
<代码>/Length应为
46
;也许是一些物品。但是是的,它在XPDF和Preview.app:-)中呈现,哦,
xref
条目本身:它们需要正好20字节长,包括EOL字符。如果它是一个2字节的EOL,则需要在末尾(在
f
n
之后)有一个填充空间。您可以使用它对PDF语法、流长度和外部参照条目进行基本检查,如下所示:
qpdf--check input.PDF
。谢谢!我想我很接近。我假设有一种默认字体可以使用,并且当前位置默认为0。规范中不清楚文本对象是否需要在流中,但也许我需要更仔细地阅读它。但是从“BT”的开头到“ET”的结尾是45字节。。。为什么应该是46?另外,根据规范,大小不应该是6(外部参照中的条目数)吗?@Kurt,谢谢。剪切并粘贴到SO期间丢失外部参照填充。希望现在更好。也调整了拖车的尺寸。