我只是想从本地pdf文件中获取页数。 我将pdf转换为字符串并尝试从中获取页码。 我尝试使用正则表达式。但我无法完善它。 所以请帮忙。
以下是字符串文字
object(setasign\Fpdi\PdfParser\Type\PdfDictionary)#2728 (1) { ["value"]=>
array(3) { ["Size"]=> object(setasign\Fpdi\PdfParser\Type\PdfNumeric)#2726
(1) { ["value"]=> int(3028) } ["Root"]=>
object(setasign\Fpdi\PdfParser\Type\PdfIndirectObjectReference)#2725 (2) {
["generationNumber"]=> int(0) ["value"]=> int(3027) } ["Info"]=>
object(setasign\Fpdi\PdfParser\Type\PdfIndirectObjectReference)#2731 (2) {
["generationNumber"]=> int(0) ["value"]=> int(3026) } } } } } }
["objects":protected]=> array(0) { } }
[ “PAGECOUNT”:保护] => INT(96)
["pages":protected]=> array(0) { } } } ["currentReaderId":protected]=>
string(71)
"C:\xampp\files\journals\2\articles\13\submission\mergedpdf\allFiles.pdf"
["importedPages":protected]=> array(0) { } ["objectMap":protected]=>
array(0) { } ["objectsToCopy":protected]=> array(1) { ["C:\xampp\files\journals\2\articles\13\submission\mergedpdf\allFiles.pdf"]=>
array(0) { } } }
我需要使用regularexpression在blockquote中显示pageCount。 下面的正则表达式代码:
ob_start();
var_dump($pdf);//this was an object so i converted it to string for pattern matching.
$result = ob_get_clean();//shows the result in string.
$subject = "pageCount";
$pattern = '/^pageCount/';//pattern to match to get page count
preg_match($pattern, substr($subject,20), $matches, PREG_OFFSET_CAPTURE);
的print_r($匹配);
答案 0 :(得分:1)
您可以使用库提供的method,例如:
$filename = 'some-file.pdf';
require_once('library/SetaPDF/Autoload.php');
// or if you use composer require_once('vendor/autoload.php');
$document = SetaPDF_Core_Document::loadByFilename($filename);
$pages = $document->getCatalog()->getPages();
$pageCount = $pages->count();
echo $pageCount;
答案 1 :(得分:0)
我宁愿遍历给定的对象而不是使用正则表达式从中获取值。
但是,如果你真正需要的是你的正则表达式:\["pageCount":protected\]=> int\(\d*\)
你可以在这里测试一下: