如何使用带有Pdfreader类的itextsharp读取PDF内容.我的PDF可能包含纯文本或文本图像.
我正在尝试使用iTextSharp库将PDF中的文本读入字符串.
iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(@"C:\mypdf.pdf");
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, 1, strategy);
text = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
pdfReader.Close();
Console.WriteLine(text);
Run Code Online (Sandbox Code Playgroud)
这通常可以正常工作,但是每隔几行就会省略空格,这样我的输出就像:"thisismyoutputwithoutwhitespace".正确解析的文本似乎与没有正确解析的文本相同; 相同的文本将被不正确地解析,这使我认为它是PDF中的东西.
我使用的是iText的转换PDF文本文件,它的工作原理其实不错,但对于一些的话它做以下事情:例如,在PDF有像"提出的主要思路"这句话,但iText的创造像"presentthemainideas"的输出.反正有没有纠正这种行为?
String pdf="/home/can/Downloads/NLP/textSummarization/A New Approach for Multi-Document Update Summarization.pdf";
String txt="/home/can/myWorkSpace/PDFConverterProject/outputs/bb.txt";
StringBuffer text=new StringBuffer() ;
String resultText="";
PdfReader reader;
try {
reader = new PdfReader(pdf);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
PrintWriter out = new PrintWriter(new FileOutputStream(txt));
TextExtractionStrategy strategy;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
strategy = parser.processContent(i, new SimpleTextExtractionStrategy());
text.append(strategy.getResultantText());
}
resultText=text.toString();
resultText = resultText.replaceAll("-\n", "");
out.println("-->"+resultText);
StringTokenizer stringTokenizer=new StringTokenizer(resultText, "\n");
PrintWriter lineWriter = new PrintWriter(new FileOutputStream("/home/can/myWorkSpace/PDFConverterProject/outputs/line.txt"));
while (stringTokenizer.hasMoreTokens()){
String curToken = stringTokenizer.nextToken();
lineWriter.println("line-->"+curToken);
}
lineWriter.flush(); …Run Code Online (Sandbox Code Playgroud)