Skip to content

文本重排

PDF 文本内容存储在与特定页面相关的CPDFPage对象中。 CPDFPage 类可用于检索 PDF 页面中的文本信息,例如单个字符、单个单词、指定字符范围或边界内的文本内容等。

文本重排的步骤分为两步:

  1. 通过 selection 获取页面上的文本边界。
  2. CPDFTextSelection 数组中获取文本,重新排列文本以显示适合设备屏幕尺寸的布局。

以下是通过 selection 获取页面上的文本边界的示例代码:

java
RectF size = readerView.getPageNoZoomSize(1);
CPDFPage pdfPage = readerView.getPDFDocument().pageAtIndex(1);
CPDFTextPage pdfTextPage = pdfPage.getTextPage();
RectF selectRect = new RectF(0f, 0f, size.width(), size.height());
selectRect = pdfPage.convertRectFromPage(readerView.isCropMode(), size.width(), size.height(), selectRect);
CPDFTextSelection[] textSelectionArr = pdfTextPage.getSelectionsByLineForRect(selectRect);
kotlin
val size = readerView.getPageNoZoomSize(1)
val pdfPage = readerView.pdfDocument.pageAtIndex(1)
val pdfTextPage = pdfPage.textPage
var selectRect: RectF? = RectF(0F, 0F, size.width(), size.height())
selectRect = pdfPage.convertRectFromPage(readerView.isCropMode, size.width(), size.height(), selectRect)
val textSelectionArr = pdfTextPage.getSelectionsByLineForRect(selectRect)

以下是从 CPDFTextSelection 数组中获取文本的示例代码:

java
int len = textSelectionArr.length;
for (int i = 0; i < len; i++) {
    CPDFTextSelection textSelection = textSelectionArr[i];
    if (textSelection == null) {
        continue;
    }
    String text = pdfTextPage.getText(textSelection.getTextRange());
}
kotlin
val textSelectionArr = pdfTextPage.getSelectionsByLineForRect(selectRect)
for (textSelection in textSelectionArr) {
  val text = pdfTextPage.getText(textSelection.textRange)
}