Encontrando resolução de imagem em arquivo PDF?

15

Tenho um problema em ter alguns usuários criando PDFs muito grandes. Por outro lado, tenho PDF enviado de nossos aparelhos de fax que são realmente pequenos em tamanho e totalmente imprimíveis. Minha pergunta é

  • Existe alguma maneira de encontrar a resolução (DPI) do PDF. Pesquisei na internet, não encontrei resposta. Verificadas as propriedades do arquivo, essas informações não foram armazenadas lá, pelo menos no meu caso.
  • Qual é a resolução ideal para converter arquivos de texto em PDF de imagem. 96 dpi, 300 dpi ou mais?
  • Pergunta divertida. Posso redimensionar um PDF que foi digitalizado com alta resolução em dpi menores?

Sei que algumas respostas podem não estar disponíveis, pois já procurei na Internet e não consegui encontrar respostas.

Nota: Meu PDF é inteiramente imagens, texto para imagens. Também estou familiarizado com o primoPDF (gratuito), algo que você pode experimentar

hk_
fonte

Respostas:

18

A resposta do slhck e o comentário do scruss merecem ser atualizados: pdfimagesnow (pelo menos desde a versão 0.26.5) lista x-ppie y-ppi. Aqui está um exemplo de saída:

$ pdfimages -list example.pdf 
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    2244  2244  cmyk    4   8  image  no       215  0   301   301  418K 2.1%
   2     1 image     900   600  rgb     3   8  image  no       324  0  1524  1525 35.5K 2.2%

No Debian (Wheezy) e no Fedora (23), pdfimagesfaz parte dos poppler-utilspacotes.

Skippy le Grand Gourou
fonte
Os meus estão todos vazios
theonlygusti
8

Sei que você não deseja extrair os dados da imagem, mas esta é provavelmente a única maneira de descobrir a resolução original.


No * nix, se você tiver o ImageMagick's identifye o Xpdf instalados 1 :

pdfimages -j test.pdf test && for file in $(find . -name "test*.jpg"); do identify "$file"; done

Onde test.pdfestá o seu PDF de entrada. Os arquivos de saída são gravados em test-000.jpg, test-001.jpgetc. Isso forneceria o tamanho original de todas as imagens contidas no PDF 2 .

Exemplo de saída para um arquivo PDF que contém apenas uma imagem grande:

./test-000.jpg JPEG 2500x1961 2500x1961+0+0 8-bit DirectClass 1.022MB 0.000u 0:00.000

1) O Windows também os possui, mas o script seria diferente, é claro.
2) Observe que as imagens realmente não carregam informações de DPI. Simplesmente falando: isso é apenas algo usado para impressão e imagens não precisa de uma medida inerente de DPI.


Qual é a resolução ideal para converter arquivos de texto em PDF de imagem. 96 dpi, 300 dpi ou mais?

Geralmente, qualquer coisa que você queira imprimir deve ter 300 dpi ou mais. A maioria das impressoras também suporta uma resolução mais alta.

slhck
fonte
2
A versão do pdfimages (talvez mais recente do que a pergunta original) a partir do projeto poppler adiciona o -list opção: pdfimages -list test.pdf. Em vez de produzir arquivos, isso lista o tamanho e o tipo de imagem. Ainda não fornece uma resolução explícita, mas evita a criação de arquivos de saída.
scruss
1
@scruss A partir da versão 0.34.0, pdfimages -listfornece explicitamente x-ppie y-ppi, assim como muitas outras informações.
Skippy le Grand Gourou
Na verdade, agora sim, @ SkippyleGrandGourou: cerca de cinco anos após a pergunta ser feita. O pdfimages ainda não aplica essa resolução / tamanho às imagens extraídas.
scruss
@scruss Na verdade, parece que a resolução dada por pdfimagespode ser bastante baixa (por exemplo, quando a imagem é maior que sua área visível, em um PDF produzido por scribus). (Infelizmente eu realmente não tenho tempo para registrar um relatório de erro agora.) #
Skippy le Grand Gourou
4

Por alguma razão, a versão mais recente do pdfimages que posso atualizar no meu CentOS é a versão 3.04.

Portanto, não tenho a opção -list, conforme declarado nas respostas anteriores. No entanto, a imagem de teste criada a partir de pdfimages com base na resposta do slhck contém a resposta desejada!

identificar -verbose test-0000.jpg | Mais

Image: test-0000.jpg  
Format: JPEG (Joint Photographic Experts Group JFIF format)  
Mime type: image/jpeg  
Class: DirectClass  
Geometry: 6600x5100+0+0  
Resolution: 600x600  
Print size: 11x8.5

Portanto, o dpi é mostrado explicitamente na 6ª linha usando a opção -verbose no comando de identificação.

Portanto, a resposta do slhck pode ser modificada para o seguinte.

pdfimages -j test.pdf test && para o arquivo em $ (encontre. -name "test * .jpg"); identifique -verbose "$ file" | awk 'NR == 6'; feito

Em outra nota, tentei correr

identifique -verbose test.pdf

Format: PDF (Portable Document Format)  
Mime type: application/pdf  
Class: DirectClass  
Geometry: 792x612+0+0  
Resolution: 72x72  
Print size: 11x8.5  

Parece que o Imagemagick sempre assume 72dpi e, portanto, as informações impressas aqui parecem incorretas.

kykong
fonte
1

Um arquivo PDF não tem uma resolução inerente, cada imagem raster dentro dele (se houver) terá sua própria resolução. Não conheço uma maneira simples de extrair um único número para a resolução mediana / modal de XObjects de imagens incorporadas.

RedGrittyBrick
fonte
A propósito, não estou interessado em extrair dados de uma imagem de pdf, só quero saber qual foi a resolução da digitalização e se ela é muito alta desnecessariamente, gostaria de evitá-la no futuro.
hk_
@ Dave: Na verdade, eu quis dizer extrair as informações sobre as imagens incorporadas não extrair a imagem. Mas a resposta do slhck pode resolver seu problema.
RedGrittyBrick
1

Isso funcionou com um pdf gerado a partir de um Kyocera mfp ... Isso provavelmente é válido apenas para imagens de página inteira, como digitalizações.

  1. Abra o pdf com o
  2. Arquivo> Propriedades - guia Descrição - Tamanho da página. Meu exemplo dizia 8,5 x 11,0 pol.

  3. Abra o pdf com um editor de texto (bloco de notas), procure /widthe/height

  4. Pegue a altura e a largura e divida-as pela altura e largura da página (em polegadas)

Exemplo:

5100/8.5=600
6600/11.0=600

Meu PDF foi digitalizado em uma resolução de 600x600.

Você pode pular as duas primeiras etapas se souber o tamanho do documento (normalmente A4 é 8.27x11.69).

Jeff21050
fonte
0

Para responder ao seu segundo ponto, além da menção de @slhck sobre o dpi da impressora, 300 dpi também é o número mínimo recomendado típico para OCR com tamanhos de fonte de 10 + pt.

Além disso, uma moderna tela de laptop 4K de 15 "também possui apenas 280PPi; portanto, se você deseja exibir um A4 inteiro na tela (paisagem), não há sentido em digitalizar mais que ~ 320 dpi, porque qualquer documento maior que isso será Obviamente, isso não importa se você planeja aumentar o zoom, talvez seja necessário um dpi mais alto.

Para responder aos outros dois pontos, hoje em dia, pelo menos, você pode usar o Acrobat Pro para verificar o DPI e a resolução da imagem e também pode editá-lo.

jiggunjer
fonte