Skip to content

文本搜索与提取

福昕 PDF SDK(Web)提供文档级和页面级文本能力,可用于全文搜索、区域取词、文本提取、搜索结果高亮、校对定位和自动化处理。

常用接口包括:

  • PDFDoc.searchText():在指定页面范围内搜索关键字。
  • PDFDoc.getText():提取指定页面的文本内容。
  • PDFPage.getText():提取单页全部文本。
  • PDFPage.getTextInRect():提取指定区域中的文本。
  • PDFPage.getCharCount()PDFPage.getCharInfoByIndex():按字符索引读取文本信息。

在文档中搜索文本

PDFDoc.searchText(pages, words, options) 用于在指定页面中搜索一个或多个关键字。

javascript
const pdfDoc = pdfViewer.getCurrentPDFDoc();

const result = await pdfDoc.searchText(
    [0, 1],
    ['Foxit', 'PDF'],
    {
        wholeWordsOnly: true,
        caseSensitive: false
    }
);

console.log(result);

返回结果按页面索引分组,每个匹配项通常包含匹配文本和对应的矩形区域。

javascript
{
    0: [
        {
            word: 'Foxit',
            rects: [
                { left: 100, right: 145, top: 720, bottom: 700 }
            ]
        }
    ],
    1: []
}

搜索选项

选项说明
wholeWordsOnly是否只匹配完整单词。
caseSensitive是否区分大小写。

提取文档文本

PDFDoc.getText(pages) 用于提取指定页面范围的文本内容。

javascript
const text = await pdfDoc.getText([[0, 2]]);
console.log(text);

提示

PDFDoc.getText() 不支持 XFA 文档。如果需要处理 XFA 表单,请参考表单相关 API。

提取单页文本

javascript
const page = await pdfDoc.getPageByIndex(0);
const text = await page.getText();

console.log(text);

提取指定区域文本

PDFPage.getTextInRect(rect, type) 用于提取 PDF 坐标区域中的文本。

javascript
const page = await pdfDoc.getPageByIndex(0);

const text = await page.getTextInRect({
    left: 100,
    right: 300,
    top: 720,
    bottom: 680
});

注意

getTextInRect() 使用 PDF 坐标,和 Viewer 中的 device pixels 不同。PDF 坐标通常以页面左下角为原点。

按字符索引读取文本信息

从 11.1.0 起,PDFPage 提供了更细粒度的字符索引能力,适合用于校对、批注锚点、搜索结果联动等场景。

javascript
const page = await pdfDoc.getPageByIndex(0);
const charCount = await page.getCharCount();

for (let i = 0; i < charCount; i++) {
    const charInfo = await page.getCharInfoByIndex(i);
    console.log(charInfo);
}

也可以通过区域获取字符范围:

javascript
const charRange = await page.getCharRange({
    left: 100,
    right: 300,
    top: 720,
    bottom: 680
});

与 UI 搜索功能的关系

如果使用完整 Viewer,搜索面板通常已内置在 UI 中,用户可以直接通过工具栏打开搜索并浏览结果。本文中的 API 更适合用于自定义搜索面板、业务自动化、批量定位或与注释、密文脱敏等功能联动。

注意事项

  • 页面索引从 0 开始。
  • 文本提取结果取决于 PDF 中是否包含可解析文本;扫描件通常需要 OCR 后才能获得可搜索文本。
  • 大文档全文搜索可能耗时较长,建议限制页码范围或在 UI 中提供取消、加载状态。
  • 区域取词使用 PDF 坐标,和截图、页面渲染使用的 device pixels 不同。