Recuperar pdf de imagens extraídas

2

Aqui estão as informações das imagens em um arquivo pdf de uma única página:

$ pdfimages -list p1.pdf 
page   num  type   width height color comp bpc  enc interp  object ID
---------------------------------------------------------------------
   1     0 image     900  1100  rgb     3   8  image  yes        4  0
   1     1 mask      900  1100  -       1   1  image  no         4  0    

Eu extraio imagens do pdf usando pdfimages :

$ pdfimages -p p1.pdf ./p1
$ ls
p1-001-000.ppm  p1-001-001.pbm   p1.pdf 

A saída p1-001-000.ppm e p1-001-001.pbm correspondem a "imagem" e "máscara" mostradas anteriormente.

Depois, tento recuperar o pdf original da "imagem" e "máscara", usando convert e pdftk de duas maneiras diferentes ("carimbo" e "fundo"):

$ for i in *.{ppm,pbm}; do convert $i $i.pdf; done
$ ls
p1-001-000.ppm  p1-001-000.ppm.pdf  p1-001-001.pbm  p1-001-001.pbm.pdf  p1.pdf
$ pdftk p1-001-000.ppm.pdf stamp p1-001-001.pbm.pdf output p1stamp.pdf
$ pdftk p1-001-000.ppm.pdf background p1-001-001.pbm.pdf output p1bkg.pdf
  1. p1stamp.pdf está em branco (muito diferente do original p1.pdf ), enquanto p1bkg.pdf e original p1.pdf estão semelhante, mas ainda diferente em torno das bordas direita e baixa.

    A saída de pdfimages mostrada no começo tem uma coluna chamada "tipo"

    type

    The image type. Possible values are: image (an opaque image), mask (a monochrome image mask), smask (a soft-mask image) and stencil (a monochrome mask image used for painging a color or a pattern).

    Note: Tranparency in PDF for images is created by using two separate PDF objects: one for the image and one for the mask or smask. The mask/smask belonging to a transparent image always directly follows image in the listing.

    São "mask", "smask" e "stencile" usados como primeiro plano ou plano de fundo em um arquivo pdf?

    Como eles são diferentes de "marca d'água"? A "marca d'água" é sempre usada como plano de fundo?

  2. Outra questão é que os dois novos arquivos pdf p1stamp.pdf e p1bkg.pdf são ambos 476 KB, muito maiores que o original p1.pdf que é apenas 94 KB. Mesmo se eu comprimir os novos arquivos pdf por comando a seguir, seus tamanhos não mudam:

    $ pdftk p1bkg.pdf output p1bkgcomp.pdf compress
    

Como podemos realisticamente fazer o oposto do trabalho dividido por      pdfimages , ou seja, recuperar arquivo pdf original de suas imagens     extraído por pdfimages . de modo que a aparência e o tamanho sejam os mesmos ou próximos do arquivo pdf original?

Obrigado.

    
por Tim 17.02.2015 / 17:49

1 resposta

2

Como a segunda imagem é uma máscara, ela precisa ser aplicada como uma máscara - isso pode ser feito assim:

convert ./p1-001-000.ppm  ./p1-001-001.pbm -alpha Off -compose CopyOpacity -composite output.pdf

fonte

Isso resulta em um PDF que tem a borda preta inferior removida / ocultada por a máscara, mas é muito maior no tamanho do arquivo (485,3 KB versus 96 KB) e tem uma página PDF maior.:

Tenha em mente que os PDFs são mais do que apenas imagens sobrepostas em cima de cada um - eles têm texto, formatação, etc. Portanto, apenas extraindo as imagens do arquivo pdf, as informações são perdidas. Se você adivinhar o arquivo PDF original no LibreOffice Draw, as bordas da imagem estão sobre a borda da página do PDF, então não são mostradas (acho que as imagens em cada uma delas também são dimensionadas para tamanhos diferentes ... - imagem extraída como PNG do LibreOffice Draw aqui para comparação)

    
por 17.02.2015 / 19:09

Tags