Как я могу получить ориентацию страницы PDF-страницы? - PullRequest
4 голосов
/ 19 марта 2009

Функция getPageDimensions (из CAM :: PDF) возвращает одинаковые значения как для портретной, так и для альбомной страниц. Как я могу определить ориентацию страницы PDF? Я использую CAM :: PDF Perl библиотеку и хотел бы знать, как сделать это с помощью этой библиотеки. Но любые другие средства для идентификации этого также приветствуются (предпочтительно с использованием библиотеки Perl).

Спасибо.

1 Ответ

4 голосов
/ 20 марта 2009

Я автор CAM :: PDF.

Ну, здесь есть две части. Одним из них является размер страницы, как вы заметили. Это работает, как и ожидалось: я использовал Apple Preview.app, чтобы вращать файл PDF, и запустил эти две командные строки:

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

Но есть также атрибут страницы `/ Rotate '. Аргумент является числом градусов (по умолчанию 0, но 90 или 270 не редкость). Как и размеры страницы, это наследуемое свойство, поэтому вам нужно переходить на родительские страницы. Вот быстрый и грязный инструмент командной строки для вывода значения вращения:

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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...