2016-02-24 101 views
0

我试图手动生成一个PDF文件,逐行。 我想放入一个图像,但它不能用于放入图像流,在文件的开头还有一个压缩流,这似乎是必要的。使用图像生成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

看对象物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

+0

感谢您的信息。它不是纯粹的试验和错误,我比较了很多PDF文件,我有一个PHP脚本,这有点帮助。老实说,PDF参考文档对我来说太难理解了,我需要代码示例来更好地理解内容。 – mjw

+0

查看真实PDF文件是一个不错的主意。但只要有人想在那里找到一个模式,就应该在规范中查找它。毕竟它可能是一只红鲱鱼...... – mkl