2009-03-19 3 views
3

getPageDimensions (CAM :: PDF) 함수는 세로 및 가로 페이지 모두에 대해 동일한 값을 반환합니다. PDF 페이지의 방향을 어떻게 식별 할 수 있습니까? 나는 CAM :: PDF Perl 라이브러리를 사용하고 있으며이 라이브러리를 사용하여 이것을 수행하는 방법을 알고 싶다. 그러나이를 확인하는 다른 방법도 환영합니다 (가능하면 Perl 라이브러리 사용).PDF 페이지의 페이지 방향을 어떻게 얻을 수 있습니까?

감사합니다.

답변

3

저는 CAM :: PDF의 저자입니다.

음, 여기에는 두 부분이 있습니다. 하나는 페이지의 크기입니다. 즉 예상대로 작동 : 나는이 두 개의 명령 라인 PDF 파일을 회전 애플의 Preview.app을 사용하고 실행 :

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 

을하지만`/ 회전 '페이지 속성도있다. 인수는 여러 도수 (기본값은 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"; 
+0

감사합니다. Chris. $ pagedict -> {Rotate} -> {value} 부분을 찾았습니다. 하지만 부모 파트가 아닙니다. 다시 한번 감사드립니다. – Thushan

+0

작은 수정. while에있는 "my $ rotate"는 $ rotate 여야합니다. – Thushan

+0

감사합니다. 내 테스트 PDF에는 명백한 "/ Rotate 0"(확실하지 않은 이유 ...)이 있으므로 버그를 알지 못했습니다. –

관련 문제