如何从pdf文件提取图片

问题描述 投票:0回答:2

要了解如何以某些文件格式存储某些数据,最好的方法通常是读取规范。 在手头的情况下,您应该阅读PDF规范ISO 32000,最好是当前的ISO 32000-2:2020,但对于初学者,较旧的ISO 32000-1:2008也应该这样做。您可以在

https://adobe.com/go/pdfreference下载后者的免费副本 nimemean,即使是免费的32000-2,也可以免费使用;
c++ image pdf extract
2个回答
0
投票

我通过“图片”假设,是指pdf规范调用

缩采样图像的位图图像。第8.9节与他们打交道。

仅显示在PDF中渗透/排列的数十个方法之一,这是我可以轻松编写的最小的工作示例。

它具有基本的9种颜色,可用于比较RGB CMYawk

如果您的编辑器与记事本女士一样好,它应该像Colours.pdf一样工作 但是在网络上粘贴可能会损坏,因此下载在这里。

0
投票
%PDF-1.7 %µ¶ 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/MediaBox[0 0 72 72]/Rotate 0/Resources 4 0 R/Contents 6 0 R/Parent 2 0 R>> endobj 4 0 obj <</XObject<</Img3 7 0 R>>>> endobj 5 0 obj <</Length 12/Type/XObject/Subtype/Image/Width 3/Height 3/BitsPerComponent 1/ColorSpace/DeviceGray/Filter/FlateDecode>> stream xœûÿ¿þ? ú} endstream endobj 6 0 obj <</Length 40/Filter/FlateDecode>> stream xœ3T0 B]C]s#…ä\. Ó!}ÏÜtc—|. È > endstream endobj 7 0 obj <</Length 22/Type/XObject/Subtype/Image/Width 3/Height 3/BitsPerComponent 8/SMask 5 0 R/ColorSpace/DeviceRGB/Filter/FlateDecode>> stream xœûÏÀÀðŒÿÿ‡`L §sõ endstream endobj xref 0 8 0000000000 00001 f 0000000016 00000 n 0000000062 00000 n 0000000114 00000 n 0000000218 00000 n 0000000262 00000 n 0000000427 00000 n 0000000535 00000 n trailer <</Size 8/Root 1 0 R>> startxref 721 %%EOF

点注意是

宽3 pel x 3骨高 EACH像素在两个方向上为1/3英寸。 enter image description here来源可以是PBM PNG GIF TIF或任何其他位图格式(甚至JPEG),但是PDF Writer需要丢弃任何此类标题并使用原始像素,因此只需要9种颜色来存储此图像。 如果来源是基线JPG,则可以在没有条带标头的情况下100%进口。

如果图像具有alpha颜色(如PNG所在),则Alpha数据也将是一个单独的对象。 AEACH对象可以具有自己的压缩格式(许多过滤器中的一个或两个),甚至可以加密。在这里,alpha很复杂,可以比较,因此与RGB颜色相同,因此所有这些都被放气为

Filter/CCITTFaxDecode

为了提取两个图像,您需要编写功能库,因为您可能会遇到的每个置换库。但是,在一个可执行文件中使用小型10-50 MB应用程序更简单,该应用程序已经从许多试验和错误中磨练了大多数排列。
pdf是Desodododododododododododed的PDF。
https://github.com/githubrulesok/mynotes/blob/master/colours_decoded.pdf

    知道,颜色不再是正确的(您可以看到一些已被绝育为文本。)用于简单的插图。
  • Filter/FlateDecode
  • 因此,色块为
  • %PDF-1.7 %µ¶ 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/MediaBox [ 0 0 72 72 ]/Rotate 0/Resources 4 0 R/Contents 6 0 R/Parent 2 0 R>> endobj 4 0 obj <</XObject<</Img3 7 0 R>>>> endobj 5 0 obj <</Length 4/Type/XObject/Subtype/Image/Width 3/Height 3/BitsPerComponent 1/ColorSpace/DeviceGray>> stream ÿÿÿ endstream endobj 6 0 obj <</Length 46>> stream 1 0 0 -1 -0 72 cm 72 0 0 -72 0 72 cm /Img3 Do endstream endobj 7 0 obj<</Length 27/Type/XObject/Subtype/Image/Width 3/Height 3/BitsPerComponent 8/SMask 5 0 R/ColorSpace/DeviceRGB>> stream ÿ ÿ ÿ ÿÿÿ ÿÿÿ ÿÿÿ endstream endobj xref 0 8 0000000000 00002 f 0000000015 00000 n 0000000060 00000 n 0000000114 00000 n 0000000220 00000 n 0000000263 00000 n 0000000399 00000 n 0000000493 00000 n trailer <</Size 8/Root 1 0 R>> startxref 664 %%EOF
  • ,每个空间都应为空。
  • ÿ ÿ ÿ ÿÿÿ ÿÿÿ ÿÿÿ
  • = r = g = b = c = c = m = y =y
  • ÿ
  • =a
  • ÿ
    = w =k
    =k
    也请注意,在这种奇数中,解压缩比压缩时小(RGB图像除外)。
    此简化情况的第三个变体是此Web Safe ASCII 
  • Https://github.com/githubrulesok/mynotes/blob/master/master/coloursascii.pdf

如果您仅研究核心对象,这也许更容易看到正在发生的事情,在PDF中无效的图片明智。
ÿ

要从C/C ++中提取图像,请使用'PDFImages -all Sample.pdf/tmp/Output' 用于提取图像的原始格式。和-j标志以JPEG格式提取图像。提取图像后,您可以使用C的Poppler库从该图像中提取文本。


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.