Todos os aplicativos PDF combinam a largura e a altura de um arquivo PDF

2

Eu tenho este arquivo PDF criado por verificação. Ao visualizá-lo em qualquer visualizador de PDF, a largura da página é maior que a altura.

Mas parece que todos os aplicativos PDF que eu tentei confundem a largura como a altura e a altura como a largura para este arquivo PDF (veja abaixo).

Por quê?

O arquivo PDF está quebrado?

Como posso "reparar" o arquivo PDF para que os aplicativos PDF não misturem sua largura e altura?

  1. O seguinte comando mostra que a largura é menor que a altura em pontos:

    $ pdfinfo test.pdf 
    Creator:        Xerox WorkCentre 7830
    Producer:       Xerox WorkCentre 7830
    CreationDate:   Tue Dec 23 00:22:47 2014
    Tagged:         no
    Form:           none
    Pages:          1
    Encrypted:      no
    Page size:      612 x 1008 pts
    Page rot:       90
    File size:      81820 bytes
    Optimized:      no
    PDF version:    1.4
    
  2. O comando a seguir mostra que a largura é menor que a altura em pixels:

    $ pdfimages -list test.pdf 
    page   num  type   width height color comp bpc  enc interp  object ID
    ---------------------------------------------------------------------
       1     0 image     864  1400  rgb     3   8  jpeg   no         6  0
       1     1 mask     1236   895  -       1   1  jbig2  no         8  0
       1     2 mask      737   891  -       1   1  jbig2  no        10  0
       1     3 mask      247   381  -       1   1  jbig2  no        11  0
       1     4 mask       44   298  -       1   1  jbig2  no        12  0
       1     5 mask      429     9  -       1   1  jbig2  no        13  0
       1     6 mask       22   258  -       1   1  jbig2  no        14  0
       1     7 mask      130   142  -       1   1  jbig2  no        15  0
    
  3. Eu estou tentando cortar as margens esquerda e direita do arquivo PDF, usando o script pdfcrop.sh aqui que parece baseado em gs e pdftk . Minhas medições das margens esquerda e direita são 116 pts e 20 pts.

    O uso do script diz:

      echo " -t \"<left> [<top> [<right> <bottom>]]\""
      echo "    trims outer page edges by the given amounts. Unit is bp. A single number"
      echo "    is used for all trims, two numbers \"<left> <top>\" are applied to the"
      echo "    right and bottom trims alike."
    

    mas

    pdfcrop.sh -t "116 0 20 0" test.pdf trimmed.pdf

    irá cortar o topo por 116 pts e o fundo por 20 pts, enquanto o seguinte faz a coisa correta por cortar a esquerda por 116 pts e o direito por 20 pts.

    pdfcrop.sh -t "0 116 0 20" test.pdf trimmed.pdf

por Tim 23.12.2014 / 02:09

1 resposta

1

0.

Aqui está um PNG feito a partir do arquivo PDF de amostra de uma página:

1.

WhenviewingitinanyPDFviewer,thepage'swidthisgreaterthantheheight.

Issoéexatamentecomodeveriaser.

2.

[...]itseemslikeallthePDFapplicationsIhavetriedmistakethewidthastheheightandtheheightasthewidthforthisPDFfile.

Comovocêdisse,sópareceassim.

3.

IsthePDFfilebroken?

Não,nãoé.

4.

Vocêignorouumainformaçãoqueseuprimeirocomando(pdfinfo)deuavocê:

Pagerot:90

Issosignificaqueocódigo-fontedoPDFdentrodoarquivoPDFdizaoespectadorquepegueestapágina"É realmente maior que a largura" e apresente uma rotação de 90 graus.

Assim, "visualizando-o em qualquer visualizador de PDF, a largura da página é maior que a altura" . Como é suposto ser. Veja meu Não. 1 acima. E meu Não. 2 acima.

5.

Você pode usar pdfimages para extrair todas as imagens e, em seguida, convert do ImageMagick para converter essas que saem como PNM ou PBM para JPEG:

 pdfimages -j test.pdf test-

 for i in *.pbm ; do            \
    convert $i ${i/.pbm/.jpg} ; \
 done

Isso resulta em oito imagens diferentes, aquelas com numeração de 0 a 7 no comando pdfimages -list da sua pergunta ( '2'. ).

Aqui estão estas imagens. Todos eles são dimensionados para 25% do tamanho original, portanto, não é desperdiçado muito espaço. Todos eles são exibidos em sua orientação "natural", pois são extraídos por pdfimages . Aqui está o primeiro, número 0 na sua lista:

Esta imagem foi extraída em sua orientação "natural". É claramente mais alto que largo.

Os seguintes pares de imagens são todos dimensionados em 25%. Eles representam imagens do tipo mask na lista do seu pdfimages output acima:

O seu digitalizador (com o software incorporado) é mais "inteligente". Ele não faz simplesmente um único TIFF da página e depois o incorpora em um shell de PDF, mas tenta otimizar as diferentes partes, usando imagens 'máscaras' (com canais alfa - aparecendo como preto cores nos JPEGs que criei) para partes que contêm texto.

Felizmente, o software do seu scanner não era "mais" inteligente quando aplicou sua compactação ao texto e usou JPEG2000 em vez de JBIG2. Então você não se apaixona pelo infame " erro de digitalização da Xerox " .

    
por 28.01.2015 / 20:28