2016-02-24 103 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