2012-08-26 73 views
1

我有一個使用Imagick PHP的PDF文件的縮略圖創建腳本。使用PHP獲取PDF文件的高度和寬度

它會創建PDF文件第一頁的縮略圖。

我能夠產生縮略圖沒有固定高度的任何問題和寬度

我必須得到PDF文件的第一頁的高度和寬度,要計算縮略圖的高度和相應的寬度。

如果我必須從圖像創建縮略圖,我可以在PHP中使用getimagesize函數,但是有沒有像這樣的函數來獲取PDF文件的第一頁的高度和寬度?

回答

4

您可以通過將[0]附加到文件名來訪問ImageMagick可以讀取的任何多頁文件格式的第一頁。

這意味着,你可以問identify打印出來的寬度和高度爲一個PDF的第一頁使用此命令,你應該沒有問題轉化爲PHP語法

identify -format "width: %W -- height: %H\n" some.pdf[0] 

這將打印在以下格式的第一頁媒體框值:

width: 345 -- height: 777 

這些值的單位爲的PostScript點(其中72 pt == 1 inch)。當然,你可以自由地修改命令以適合您的需求,就像給了只有2個數值,或使用WxH格式:

identify -format "%W %H\n" some.pdf[0] 
identify -format "%Wx%H\n" some.pdf[0] 

但是,應注意以下事實:

  1. PDF還支持可選裁切框裁剪框作品框出血框設置。
  2. 最重要的是裁切框,因爲:
  3. 如若裁切框是從媒體框不同(它需要相同或更小,並且不允許要大些!)那麼PDF查看器和打印機驅動程序只會呈現該框內的頁面部分。
  4. identify只會返回MediaBox值,它不支持其他Box。
  5. 同樣,convert將使用PDF頁面的(可能更大的)MediaBox大小來呈現圖像(因此其結果看起來看起來與您在PDF查看器中看到的看起來不同)。
  6. 幸運的是,含有的PDF與TrimBox的值非常不同MediaBox值不是很常見。
  7. 如果您需要訪問所有Box的值設置,則應使用其他命令實用程序來提取相關信息:pdfinfo -box -f 1 -l 1 some.pdf | grep -E '(Box:|rot:|size:)'。(如果可能的話,使用Poppler版本pdfinfo ...)