我尝试手动编写包含标题,某些文字和图片的简单 PDF 文件。我找到了一个手动编写" Hello world" 的例子,并设法改变了一些东西,但我不能让它适用于另一个文本对象。我在互联网上寻求帮助,但没有运气,我想没有多少人写自己的PDF文件。
这是我到目前为止所做的:
%PDF-1.7
1 0 obj % entry point
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/MediaBox [ 0 0 200 200 ]
/Count 1
/Kids [ 3 0 R ]
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/Resources <<
/Font <<
/F1 4 0 R
>>
>>
/Contents 4 0 R
>>
endobj
4 0 obj % page content
<<
/Length 20
>>
stream
BT
80 180 TD
/F1 14 Tf
(PDF) Tj
ET
endstream
endobj
5 0 obj % page content
<<
/Length 20
>>
stream
BT
50 70 TD
/F1 14 Tf
(this is a pdf) Tj
ET
endstream
endobj
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
492
%%EOF
我尝试使用&#34添加另一个文本对象;这是一个pdf&#34;文字,但它不会出现,我不知道什么可能是错的,我尝试改变一些事情,但没有运气。图片部分我也没有,所以一些帮助就好了。
这是关于&#34; hello world&#34;的维基。 pdf我发现: http://www.gnupdf.org/Introduction_to_PDF
Adobe提供了一些关于pdf如何工作的解释,但我找不到任何可以解决我的问题的方法: http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf
答案 0 :(得分:2)
这不是有效的PDF。如果Acrobat完全打开它,因为它已在外部参照表上放弃并完成了对文件的完整扫描,但您的PDF无效。 4 0 obj不是您指定的字体,并且不会从任何地方访问5 0 obj。
PDF规范要求外部参照表指向文件中每个对象的确切位置。除非您打算每次添加或删除文件中的1个字节时手动更新整个外部参照表,否则您无法用手实际写入此内容。
您可以从代码中轻松地从头开始编写PDF,但只能在记事本中打开PDF并开始更改内容,因为索引(外部参照)会立即损坏。
除非评论从新行开始,否则我还建议不要在整个文件中添加评论。否则一些PDF解析器会混淆,因为这通常是不期望的。通常PDF文件不包含注释(第二行除外,Adobe建议将其作为某些非ASCII字符的注释,因此FTP将文件识别为二进制文件),因为它们几乎不可能手动编写。
答案 1 :(得分:1)
几年前,我写了一本书,其中涵盖了这类事情:
http://www.amazon.com/PDF-Explained-John-Whitington/dp/1449310028/
没有免费的在线版本,我很害怕。您可以从Adobe自己的文档中获取所有相同的信息,这是免费的,但这是一个相当长的文档!