Je suis l'auteur de CAM :: PDF.
Eh bien, il y a deux parties à cela. L'un est les dimensions de la page, comme vous l'avez noté. Cela fonctionne comme prévu: J'utilisé Preview.app d'Apple pour faire pivoter un fichier PDF et couru ces deux lignes de commande:
perl -MCAM::PDF -le'print "@{[CAM::PDF->new(shift)->getPageDimensions(1)]}"' orig.pdf
0 0 612 792
perl -MCAM::PDF -le'print "@{[CAM::PDF->new(shift)->getPageDimensions(1)]}"' rotated.pdf
0 0 792 612
Mais il y a aussi l'attribut page `/ Rotation ». L'argument est un nombre de degrés (par défaut 0, mais 90 ou 270 ne sont pas rares). Comme les dimensions de la page, il s'agit d'une propriété héritable. Vous devez donc naviguer vers les pages parentes. Voici un outil de ligne de commande rapide et sale pour afficher la valeur de rotation:
use CAM::PDF;
my $filename = shift || die;
my $pagenum = shift || die;
my $pdf = CAM::PDF->new($filename) || die;
my $pagedict = $pdf->getPage($pagenum);
my $rotate = 0;
while ($pagedict) {
$rotate = $pdf->getValue($pagedict->{Rotate});
if (defined $rotate) {
last;
}
my $parent = $pagedict->{Parent};
$pagedict = $parent && $pdf->getValue($parent);
}
print "/Rotate $rotate\n";
Merci Chris. J'ai pensé que $ pagedict -> {Rotate} -> {value} part. Mais pas la partie parent. Merci encore. – Thushan
Petite correction. "my $ rotate" dans le while devrait être $ rotate. – Thushan
Merci. Mon test PDF avait un "/ Rotate 0" explicite (je ne sais pas pourquoi ...) donc je n'ai pas remarqué le bug. –