如何使用PHP从PDF文件访问元数据信息?

时间:2012-09-12 16:02:24

标签: php pdf xmp metatag

如何使用PHP从PDF文件访问元数据(XMP)信息?我需要文件的高度和宽度。

3 个答案:

答案 0 :(得分:2)

似乎ImageMagick understands PDF'sImagick::identifyImage()返回一个包含大量信息的数组。

此片段:

$img = new Imagick('test.pdf');
var_dump($img->identifyImage());

生成此渲染:

array(9) {
  ["imageName"]=>
  string(9) "/test.pdf"
  ["format"]=>
  string(30) "PDF (Portable Document Format)"
  ["geometry"]=>
  array(2) {
    ["width"]=>
    int(596)
    ["height"]=>
    int(843)
  }
  ["resolution"]=>
  array(2) {
    ["x"]=>
    float(72)
    ["y"]=>
    float(72)
  }
  ["units"]=>
  string(9) "Undefined"
  ["type"]=>
  string(14) "TrueColorMatte"
  ["colorSpace"]=>
  string(3) "RGB"
  ["compression"]=>
  string(9) "Undefined"
  ["fileSize"]=>
  string(7) "37.6KBB"
}

答案 1 :(得分:1)

您可能希望了解Zend Framework,特别是他们的Zend_Pdf组件。

从他们的手册页:

$pdf = Zend_Pdf::load($pdfPath);

echo $pdf->properties['Title'] . "\n";
echo $pdf->properties['Author'] . "\n";

$pdf->properties['Title'] = 'New Title.';
$pdf->save($pdfPath);

HTH

答案 2 :(得分:1)

如果您只想要宽度和高度,请使用

<?php 

$pdffile = "filename.pdf";
$pdfinfo = shell_exec("pdfinfo ".$pdffile); 

// find height and width
preg_match('/Page size:\s+([0-9]{0,5}\.?[0-9]{0,3}) x ([0-9]{0,5}\.?[0-9]{0,3})/', $pdfinfo,$heightandwidth); 
$width = $heightandwidth[1]; 
$height = $heightandwidth[2]; 

?> 

这将以pts为单位给出你的身高和宽度。然后你可以做一些简单的数学运算,转换成你想要的单位。