JPEGをアーカイブするのに無圧縮ZIPを使っていましたが(id:n7shi:20100923)、PDFの中にはJPEGがそのまま入っているため(id:n7shi:20110201)、PDFはZIPと同じようにコンテナとして扱えることに気付きました。
さっそく試そうと思い、以前id:m107さんに教えていただいたサイトを見返しました。
JPEGの埋め込み方は説明されていませんが、手元にあるPDFファイルなどを参考に補ってみました。最小構成の1ページでは以下のようになります。
※改行コードはCR+LFとしてオフセットを求めています。
%PDF-1.2
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<<
/Type /Pages /Count 1
/Kids
[
3 0 R
]
>>
endobj
3 0 obj
<<
/Type /Page /Parent 2 0 R /Contents 4 0 R
/MediaBox [ 0 0 16 16 ]
/Resources
<<
/ProcSet [ /PDF /ImageB /ImageC /ImageI ]
/XObject << /Jpeg1 5 0 R >>
>>
>>
endobj
4 0 obj
<< /Length 30 >>
stream
q 16 0 0 16 0 0 cm /Jpeg1 Do Q
endstream
endobj
5 0 obj
<<
/Type /XObject /Subtype /Image /Name /Jpeg1
/Filter /DCTDecode /BitsPerComponent 8 /ColorSpace /DeviceRGB
/Width 16 /Height 16 /Length 631
>>
stream
※ここにJPEGファイルのバイナリをそのまま埋め込む
endstream
endobj
xref
0 6
0000000000 65535 f
0000000012 00000 n
0000000066 00000 n
0000000148 00000 n
0000000353 00000 n
0000000441 00000 n
trailer
<< /Root 1 0 R /Size 6 >>
startxref
1268
%%EOF