Obtenha o modo de layout (paisagem ou retrato) de um pdf a partir do php / linux

Dado um PDF, como se pode obter o modo de layout de um PDF (ou largura / altura relativa) usando uma ferramenta de linha de comando PHP lib ou linux?

Usando http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf que pode definir esta variável em novos PDFs, mas para os pdfs existentes do adobe.

Pensou em converter pdfs para ps, ou usando gs de alguma outra maneira – como converter-se em uma imagem primeiro, e obter a largura e a altura disso. É este o melhor caminho?

A solução que estou usando é usar ghostscript para imprimir a primeira página em uma imagem e, em seguida, obter as dimensões da imagem

$cmd = 'gs -dSAFER -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 -sDEVICE=png16m -r400 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="'.$complete_file_path.'/p%d.png" "'.$complete_file_path.'/'.$this->pdffilename.'"'; $result = $this->proc( $cmd ); list($width, $height, $type, $attr) = getimagesize($complete_file_path.'/'.$pngfilename); 

Você não pode sempre confiar nos resultados da primeira página para ser o mesmo por todo o resto. Eu vi bastante PDFs de formato misto lá fora, na natureza, para não querer basear qualquer código nessa suposição.

Uma maneira mais confiável de determinar os tamanhos de mídia para cada página (e até mesmo cada uma das checkboxs incorporadas {Trim, Media, Crop, Bleed}) é a ferramenta de linha de comando pdfinfo.exe (parte das ferramentas XPDF de http: // www .foolabs.com / xpdf / download.html ). Você pode executar a ferramenta com o parâmetro “-box” e informá-lo com “-f 3” para começar na página 3 e com “-l 8” para parar o processamento na página 8.

Exemplo de saída:

 C: \ downloads> pdfinfo -box -f 1 -l 3 _IXUS_850IS_ADVCUG_PT.pdf
 Criador: FrameMaker 6.0
 Produtor: Acrobat Distiller 5.0.5 (Windows)
 Data de Criação: 17/08/06 16:43:06
 ModDate: 22/08/06 12:20:24
 Tagged: não
 Páginas: 146
 Criptografado: não
 Tamanho da página: 419.535 x 297.644 pts
 Tamanho da página: 297.646 x 419.524 pts
 Tamanho da página: 297.646 x 419.524 pts
 Page 1 MediaBox: 0.00 0.00 595.00 842.00
 Page 1 CropBox: 87,25 430,36 506,79 728,00
 Page 1 BleedBox: 87,25 430,36 506,79 728,00
 Page 1 TrimBox: 87,25 430,36 506,79 728,00
 Page 1 ArtBox: 87,25 430,36 506,79 728,00
 Page 2 MediaBox: 0.00 0.00 595.00 842.00
 Page 2 CropBox: 148.17 210.76 445.81 630.28
 Page 2 BleedBox: 148,17 210,76 445,81 630,28
 Page 2 TrimBox: 148,17 210,76 445,81 630,28
 Page 2 ArtBox: 148,17 210,76 445,81 630,28
 Page 3 MediaBox: 0.00 0.00 595.00 842.00
 Page 3 CropBox: 148.17 210.76 445.81 630.28
 Page 3 BleedBox: 148,17 210,76 445,81 630,28
 Page 3 TrimBox: 148.17 210.76 445.81 630.28
 Page 3 ArtBox: 148,17 210,76 445,81 630,28
 Tamanho do arquivo: 6888764 bytes
 Otimizado: sim
 Versão PDF: 1.4

Grande arma, mas nenhuma outra sugestão. Utilizei a biblioteca iText Java para processar arquivos pdf.

Note-se que, tanto quanto eu sei, não existe tal como o modo de layout PDF, nem o tamanho. O PDF é uma coleção de páginas, cada uma das quais possui uma checkbox de mídia que define o tamanho da página a ser impressa. No entanto, esta propriedade pode ser herdada por uma página de páginas anteriores se não for definida. Consulte a referência em PDF para obter detalhes.