gpt4 book ai didi

php pdfparser 不适用于 pdf 版本 1.7

转载 作者:行者123 更新时间:2023-12-04 21:21:50 25 4
gpt4 key购买 nike

我正在使用 pdfparser 来解析 pdf 文件中的文本。对于旧版本的 pdf 文件,它可以工作,但对于新版本的 pdf 文件,这个解析器不工作。我的pdf版本是1.7

<?php
include 'vendor/autoload.php';
// Parse pdf file and build necessary objects.
$parser = new Smalot\PdfParser\Parser();
$pdf = $parser->parseFile('sample.pdf');
// Retrieve all pages from the pdf file.
$pages = $pdf->getPages();
// Loop over each page to extract text.
$content=array();
foreach ($pages as $page) {
$content[]= $page->getTextArray();
echo"<pre>";
print_r($content);

}

最佳答案

我遇到了同样的行为!

现在我在尝试解析之前使用工具来检查 pdf 版本。如果它不是 1.4,我将它转换为 1.4,然后解析它。如果需要,这里有一个 php 库:https://github.com/xthiago/pdf-version-converter

代码示例:

function searchablePdfParser($systemPath) {
//we save the file to a temporay file because we might need to convert it.
$tempPath = getPathWithIdAndTimestamp($systemPath) . 'tmp.pdf';
copy($systemPath, $tempPath);
//check whether it needs to be converted and convert it if required
$guesser = new RegexGuesser();
$pdfVersion = $guesser->guess($tempPath); // will print something like '1.4'
if ( $pdfVersion != '1.4' ) {
$command = new GhostscriptConverterCommand();
$filesystem = new Filesystem();
$converter = new GhostscriptConverter($command, $filesystem);
$converter->convert($tempPath, '1.4');
}
//parse the original file or the converted file if it hadn't been a pdf 1.4 version
$parser = new \Smalot\PdfParser\Parser();
$pdf = $parser->parseFile($tempPath);
$text = $pdf->getText();
unlink($tempPath);
if ( strlen($text) < 30 ) {
return '';
}
return $text;
}

关于php pdfparser 不适用于 pdf 版本 1.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40016313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com