如何从pdf页面中仅提取可见文本?

问题描述 投票:0回答:1

我正在尝试从pdf中提取文本,但问题是它也在读取隐藏文本。 我该如何解决这个问题?

我尝试了下面的代码

    public static void iTextExample() {
    String pdfFilePath = "path_to_pdf_file.pdf";
    try {
        PdfReader reader = new PdfReader(pdfFilePath);
                    int pageNo = 10;
        String pageContent = PdfTextExtractor.getTextFromPage(reader,pageNo);
        System.out.println("Page Content: \n" + pageContent);
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

但代码也读取隐藏文本。

示例: 页面上可见文字

内容一览 简介二十三 第一章 简介 1 第二章机制 17 第 3 章技术 39 ... 索引

从 iText 中提取后的文本

斯塔德f? rs.indd V4 - 08/17/2011 第 viii 页 内容一览 简介二十三 第一章 简介 1 第二章机制 17 第 3 章技术 39 ... 索引 853 八 ffirs.inddffirs.indd viiiviii 8/19/20118/19/2011 12:22:38 PM12:22:38 PM

java itext pdfbox
1个回答
0
投票

项目树

PDFBoxReadText
├── pom.xml
└── src
    └── main
        └── java
            └── com
                └── example
                    └── Main.java

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>pdfbox-read-text</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>pdfbox-read-text</name>
    <description>JPA Project</description>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.31</version>
        </dependency>
    </dependencies>
</project>

Main.java

package com.example;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        String pdfFilePath ="/your-path/your-pdf-file.pdf";
        
//config page
        int startPage = 27;
        int endPage = 27;

        try (PDDocument document = PDDocument.load(new File(pdfFilePath))) {

            PDFTextStripper textStripper = new PDFTextStripper();

            textStripper.setStartPage(startPage);
            textStripper.setEndPage(endPage);

            String text = textStripper.getText(document);

//print text
            System.out.println(text);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

构建

运行命令

mvn clean package

下载依赖jar文件

mvn dependency:copy-dependencies -DoutputDirectory=target/libs

测试程序

java -cp "target/libs/*:target/pdfbox-read-text-0.0.1-SNAPSHOT.jar" com.example.Main

IDE 工具

您也可以使用您喜欢的IDE工具(Eclipse、Netbeans、IDEA)打开此项目目录(或使用Import Maven Project),并在IDE工具中进行编辑和测试。

© www.soinside.com 2019 - 2024. All rights reserved.