用图像生成PDF文件

时间:2016-02-24 09:56:00

标签: pdf-generation jpeg

我正在尝试逐行手动生成PDF文件。 我想把一个图像放入其中但是它只是放入图像流,在文件的开头也有一个压缩流,这似乎是必要的。

包含图片的PDF文件示例:

%PDF-1.4
%âãÏÓ
1 0 obj
<</Type/Page/MediaBox[0 0 2048 1365]/Resources<</XObject 6 0 R>>/Contents 2  0 R/ArtBox[0 0 2048 1365]/CropBox[0 0 2048 1365]/Parent 8 0 R>>
endobj
2 0 obj

<</Filter/FlateDecode/Length 53>>
stream

THE STREAM THAT I AM TALKING ABOUT

endstream
endobj 

3 0 obj
<</D[1 0 R/FitH 1370.000]/S/GoTo>>
endobj
5 0 obj
<</Type/XObject/Subtype/Image/ColorSpace/DeviceRGB/Filter/DCTDecode/Width 2048/Height 1365/Length 623547/BitsPerComponent 8>>
stream

...

JPEG DATA HERE

...

endstream
endobj

...


那么,该流是什么以及如何创建它? 感谢

1 个答案:

答案 0 :(得分:1)

看对象1:

1 0 obj
<</Type/Page/MediaBox[0 0 2048 1365]/Resources<</XObject 6 0 R>>/Contents 2  0 R/ArtBox[0 0 2048 1365]/CropBox[0 0 2048 1365]/Parent 8 0 R>>
endobj

它表示一个页面(/Type/Page)并引用对象2作为其内容(/Contents 2 0 R)。因此,您的神秘流包含在对象1中建模的页面上绘制的内容的描述!

内容流不一定是压缩的,但由于PDF内容描述说明的详细程度,它们通常可以很好地压缩。

在这样的流中,可以有各种各样的指令来设置状态(颜色,变换,透明度......)和绘制文本/位图/矢量图形,这些都是由这些设置决定的。

在您的情况下,内容流至少应包含类似

的内容
2048 0 0 1365 0 0 cm
/Im0 Do

Im0 是您与对象6中的图片资源相关联的名称。

尽管如此,您应该只阅读PDF规范ISO 32000-1,而不是使用纯粹的反复试验。

相关问题