2009-09-23 21 views
3

Étant donné un PDF, comment obtenir le mode de mise en page d'un PDF (ou largeur/hauteur relative) en utilisant un outil de ligne de commande PHP lib ou linux?Obtenir le mode de présentation (paysage ou portrait) d'un pdf de php/linux

En utilisant http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf qui peut définir cette variable sur les nouveaux fichiers PDF, mais pour les fichiers PDF existants à partir d'Adobe. Pensée de convertir pdfs en ps, ou en utilisant gs d'une autre manière - comme le convertir en une image d'abord, et en obtenant la largeur et la hauteur de cela. Est-ce la meilleure façon?

+0

Il n'existe pas de «mode de mise en page d'un PDF». Qu'est-ce qu'il y a un «mode de mise en page d'une * page *». Ce que vous supposez (qu'un PDF a des tailles de page et des orientations égales tout au long) est juste un cas particulier (ce qui peut être quelque peu commun, ironiquement)! Voir aussi [comment prendre en compte la zone de rognage et le paramètre de rotation des pages PDF] (http://stackoverflow.com/a/12052546/359307) ... –

Répondre

3

La solution que je utilise est d'utiliser Ghostscript pour imprimer la première page à une image, puis obtenir les dimensions de l'image

$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); 
+0

Cela manquera tous les cas où le PDF contient des pages de taille mixte et d'orientation mixte. (Et croyez-moi, il y en a quelques uns dans la nature ...) –

0

Gros canon, mais aucune autre suggestion. J'ai utilisé la bibliothèque Java iText pour le traitement des fichiers pdf. Notez que pour autant que je sache, il n'y a pas de mode de mise en page PDF ou de taille. Le PDF est une collection de pages dont chacune a une boîte multimédia définissant la taille de la page à imprimer. Cependant, cette propriété peut être héritée par une page des pages précédentes si elle n'est pas définie. Voir PDF reference pour plus de détails.

+0

La bibliothèque iText java ressemble à l'équivalent de tcpdf. Merci pour l'astuce sur les fichiers PDF par –

+0

Votre lien 'référence PDF' est cassé. –

1

Vous ne pouvez pas toujours compter sur les résultats de la première page à la même pour tout le reste. J'ai vu assez de PDFs en format mixte dans la nature pour ne pas vouloir baser n'importe quel code sur cette hypothèse.

Une méthode plus fiable pour déterminer les tailles de support pour chaque page (et même chacune des boîtes {Trim, Media, Crop, Bleed} intégrées) est l'outil de ligne de commande pdfinfo.exe (partie des outils XPDF de http://www.foolabs.com/xpdf/download.html). Vous pouvez exécuter l'outil avec le paramètre « -box » et lui dire avec « -f 3 » pour démarrer à la page 3 et « L8 » pour arrêter le traitement à la page 8.

sortie Exemple:

 
C:\downloads>pdfinfo -box -f 1 -l 3 _IXUS_850IS_ADVCUG_EN.pdf 
Creator:  FrameMaker 6.0 
Producer:  Acrobat Distiller 5.0.5 (Windows) 
CreationDate: 08/17/06 16:43:06 
ModDate:  08/22/06 12:20:24 
Tagged:   no 
Pages:   146 
Encrypted:  no 
Page 1 size: 419.535 x 297.644 pts 
Page 2 size: 297.646 x 419.524 pts 
Page 3 size: 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 
File size:  6888764 bytes 
Optimized:  yes 
PDF version: 1.4