【问题标题】:Importing PDF to String in java在java中将PDF导入字符串
【发布时间】:2017-09-03 02:07:09
【问题描述】:

我需要使用 java 从 pdf 文件中提取文本。我找到了 iText,但它并没有按照我想要的方式工作。这是我的代码

package com.itextpdf.mavenproject1;


import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfButtonFormField;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.io.font.FontConstants;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import com.itextpdf.kernel.pdf.PdfString;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.action.PdfAction;
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfTextAnnotation;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.test.annotations.WrapToTest;
import java.io.File;
import java.io.IOException;

public class zczytywanie {

    public static void main(String args[]) throws IOException {


       PdfDocument pdfDoc = new PdfDocument(new PdfReader("D:/pdf/pdf"));

       String page= PdfTextExtractor.getTextFromPage(pdfDoc, 1);

       System.out.println(page);

    }
}

它告诉我在我尝试使用 PDdfTextExtractor 的行中有错误(PdfDocument 无法转换为 pdfPage,尽管我发现 pdfDoc 必须是 PdfReader)

不适合

PdfReader pdfDoc = new PdfReader("D:/pdf/pdf");

要么。

【问题讨论】:

  • itextsupport.com/apidocs/itext5/latest/com/itextpdf/text/pdf/… 它需要一个 PdfReader 对象。我还会隐约假设 D:/pdf/pdf 不是 PDF 文件,因为它没有 PDF 扩展名。
  • 正如我所写,我也尝试使用 pdfreader,如果我尝试将 pdfDoc 设为 pdfReader,它会显示“PdfReader 无法转换为 pdfPage”。 D:/pdf/pdf 是一个错误,但我认为这对编译器无关紧要,当程序已经构建并运行时应该会出现这个错误。
  • 检查您的 itext 版本,PdfTextExtractor 从 2.1.4 开始需要阅读器
  • 您的导入中有两个PdfTextExtractor,一个来自com.itextpdf.text.pdf.parser.PdfTextExtractor,另一个来自com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor。您是否引用了正确的,您的类路径如何?
  • 上一个评论者是正确的。您正在混合 iText 5 和 iText 7 类!

标签: java pdf text itext extract


【解决方案1】:

你可以试试 PDFBox 或 Tikka。但这里我举一个 PDFBox 的例子

将 PDFBox jar 依赖项添加到您的 pom.xml。

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

Java 类

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

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

    public class TestPDF {
        public static void main(String[] args) {
           try (PDDocument document = PDDocument.load(new File("/path_to_your_pdf_file"))) {
               document.getClass();
    
               if(!document.isEncrypted()){
                   PDFTextStripperByArea stripper = new PDFTextStripperByArea();
                   stripper.setSortByPosition(true);
    
                   PDFTextStripper tStripper = new PDFTextStripper();
                   String pdfFileInText = tStripper.getText(document);
                   System.out.println("Text:" + pdfFileInText);
                   
               }
           } catch (IOException e) {
               e.printStackTrace();
           }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多