从PDF中提取段落
Contents
[
Hide
]
以段落形式从PDF文档中提取文本
我们可以通过在单个页面或整个文档中搜索特定文本(使用“纯文本”或“正则表达式”)来获取PDF文档中的文本,或者我们可以获取单个页面、页面范围或整个文档的完整文本。然而,在某些情况下,您需要从PDF文档中提取段落或以段落形式的文本。我们已经实现了在PDF文档页面的文本中搜索章节和段落的功能。我们引入了ParagraphAbsorber类(类似于TextFragmentAbsorber和TextAbsorber),可以用于从PDF文档中提取段落。
遍历段落集合并获取它们的文本
// 打开一个现有的PDF文件
$document = new Document($inputFile);
// 实例化 ParagraphAbsorber
$absorber = new ParagraphAbsorber();
$absorber->visit($document);
$responseData = "";
foreach ($absorber->getPageMarkups() as $markup) {
$i = 1;
foreach ($markup->getSections() as $section) {
$j = 1;
foreach ($section->getParagraphs() as $paragraph) {
$paragraphText = "\r\n";
foreach ($paragraph->getLines() as $line) {
foreach ($line as $fragment) {
$paragraphText = $paragraphText . $fragment->getText();
}
$paragraphText = $paragraphText . "\r\n";
}
$paragraphText = $paragraphText . "\r\n";
$responseData = $responseData . "第 " . $j++ . " 段,第 " . $i++ . " 节,第 " . markup->getNumber() . " 页:";
$responseData = $responseData . $paragraphText;
$j++;
}
$i++;
}
}
// 将提取的文本保存到输出文件。
file_put_contents($outputFile, $responseData);