在java中将PDF导入字符串
我需要使用java从pdf文件中提取文本。我找到了iText,但它没有按我希望的方式工作。这是我的密码在java中将PDF导入字符串,java,pdf,text,itext,extract,Java,Pdf,Text,Itext,Extract,我需要使用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.i
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=新PdfReader(“D:/pdf/pdf”)
你可以试试PDFBox或Tikka。但我在这里举一个PDFBox的例子 将PDFBox jar依赖项添加到pom.xml中
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.23</version>
</dependency>
</dependencies>
它接受一个PdfReader对象。我还模糊地假设D:/pdf/pdf不是pdf文件,因为它没有pdf扩展名。正如我所写的,我也尝试使用pdf阅读器,如果我尝试将pdfDoc设置为pdf阅读器,它会说“pdf阅读器无法转换为pdfPage”。D:/pdf/pdf是一个错误,但这对编译器来说并不重要。我认为,当程序已经生成并运行时,应该会出现此错误。检查您的itext版本,PDFTextractor从2.1.4开始就使用读取器。导入时有两个
PDFTextractor
,一个来自com.itextpdf.text.pdf.parser.pdftextractor
,另一个来自com.itextpdf.kernel.pdf.canvas.parser.pdftextractor
。你引用的是正确的吗?你的类路径如何?前面的评论是正确的。您正在混合使用iText 5和iText 7课程!
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();
}
}
}