生成带有图像的 PDF 文件
Generate PDF File With Image
我正在尝试逐行手动生成 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 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 内容描述说明的冗长,它们通常可以很好地压缩。
在这样的流中,可以有各种各样的指令来设置状态(颜色、变换、透明度等)和根据这些设置绘制 text/bitmaps/vector 图形。
在您的情况下,内容流至少应包含类似
的内容
2048 0 0 1365 0 0 cm
/Im0 Do
Im0 是您在对象 6 中与图像资源关联的名称。
总而言之,与其使用纯粹的试错法,您应该简单地阅读 PDF 规范 ISO 32000-1。
我正在尝试逐行手动生成 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 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 内容描述说明的冗长,它们通常可以很好地压缩。
在这样的流中,可以有各种各样的指令来设置状态(颜色、变换、透明度等)和根据这些设置绘制 text/bitmaps/vector 图形。
在您的情况下,内容流至少应包含类似
的内容2048 0 0 1365 0 0 cm
/Im0 Do
Im0 是您在对象 6 中与图像资源关联的名称。
总而言之,与其使用纯粹的试错法,您应该简单地阅读 PDF 规范 ISO 32000-1。