Normalmente, todas as imagens são gravadas como arquivos PBM (para imagens monocromáticas), PGM (para imagens em tons de cinza) ou PPM (para imagens coloridas). Com esta opção, as imagens no formato DCT são salvas como arquivos JPEG. Todas as imagens não-DCT são salvas no formato PBM/PGM/PPM normalmente. (As imagens embutidas são sempre salvas no formato PBM/PGM/PPM.)
-
man pdfimages
do Xpdf
O formato de saída padrão é PBM (para imagens monocromáticas) ou PPM para não monocromáticas. As opções -png ou -tiff mudam para a saída padrão para PNG ou TIFF, respectivamente. Se -png e -tiff forem especificados, as imagens CMYK serão gravadas como TIFF e todas as outras imagens serão gravadas como PNG. Além disso, as opções -j, -jp2 e -jbig2 farão com que as imagens JPEG, JPEG2000 e JBIG2, respectivamente, no arquivo PDF sejam gravadas em seu formato nativo.
-
man pdfimages
de poppler
Qual é a razão pela qual ambas as implementações de pdfimages
extração de imagens em formatos "misteriosos" (eu os chamo de "misteriosos" porque nunca ouvi falar deles antes) PBM/PGM/PPM (conhecidos coletivamente como Netpbm ou PNM, https://en. wikipedia.org/wiki/Netpbm ) em vez de PNG, JPEG ou talvez GIF, que são (posso estar errado, é claro) é o padrão de fato no mundo do usuário casual atualmente (e, se bem me lembro, era o mesmo padrão de fato de 10 e 20 anos atrás também)?
As ferramentas netpbm têm décadas (desde 1988). Os formatos normalmente não são o estado de destino (porque não são eficientes em tamanho), portanto você normalmente não verá esses arquivos em vez de GIF/JPG/PNG.
A ideia, em vez disso, é ter um formato neutro e sem perdas que possa ser usado como intermediário nas conversões de tipos de arquivos.
Então, em vez de escrever um conversor PNG->JPEG e JPEG->PNG, você escreveria um conversor para PNG de/para o formato neutro e para JPEG de/para o formato. Até agora isso parece ruim; 4 programas em vez de dois.
Mas agora adicionamos GIF; tudo o que precisamos é de GIF de/para o formato e agora obtemos automaticamente GIF<->PNG e GIF<->JPEG; 4 conversões pelo custo de 2 programas. Então adicionamos BMP ao/do formato e obtemos BMP<->GIF, BMP<->PNG, BMP<->JPEG; 6 conversões pelo custo de 2 programas. Vamos adicionar PDF e obteremos 8 conversões para 2 programas.
Podemos ver que quanto mais formatos pudermos converter de/para o formato neutro, mais conversões obteremos como resultado, e todos esses 2 programas só precisam conhecer seu próprio formato especial (por exemplo, JPG) e o intermediário neutro, que é muito mais fácil para os autores lidarem!
Os formatos gif e jpeg, na verdade, são anteriores ao netpbm, mas são formatos muito complicados que requerem bibliotecas especializadas para lê-los e gravá-los com êxito. Na época em que o netpbm foi criado, não havia nem mesmo uma especificação formal para o formato gif fora do código existente, então os gifs não podiam ser lidos sem uma biblioteca gif ou muitas tentativas e erros para encontrar casos especiais.
Os formatos pbm/pgm/ppm são basicamente dados brutos com um belo cabeçalho, por isso é trivial escrever código para lê-los e escrevê-los, mesmo sem usar bibliotecas complicadas. Você pode até usá-los para criar imagens com scripts de shell gerando os dados brutos.
Além das vantagens e flexibilidade criadas pelo uso de um formato neutro (conforme descrito na outra resposta), esses formatos foram criados para que códigos simples pudessem ler e gravar imagens sem a necessidade de se preocupar com bibliotecas específicas de formatos complicados, e fazer isso em da maneira mais portátil possível.