下面是将pdf文件转换为文本文件的代码。 代码成功运行,但不会生成生成的文本文件(Sample.txt)。任何人都可以对此有所了解吗? 代码部分是基于在行动书第一的iText的例子...如何使用itext liberary将pdf转换为文本文件
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
public class ConvertPDFToTEXT {
public static void main(String[] args) throws IOException {
try {
Document document = new Document();
document.open();
PdfReader reader = new PdfReader("Data Dictinary A4.pdf");
PdfDictionary dictionary = reader.getPageN(1);
PRIndirectReference reference = (PRIndirectReference)
dictionary.get(PdfName.CONTENTS);
PRStream stream = (PRStream) PdfReader.getPdfObject(reference);
byte[] bytes = PdfReader.getStreamBytes(stream);
PRTokeniser tokenizer = new PRTokeniser(bytes);
FileOutputStream fos=new FileOutputStream("Sample.txt");
StringBuffer buffer = new StringBuffer();
while (tokenizer.nextToken()) {
if (tokenizer.getTokenType() == PRTokeniser.TK_STRING) {
buffer.append(tokenizer.getStringValue());
}
}
String test=buffer.toString();
StringReader stReader = new StringReader(test);
int t;
while((t=stReader.read())>0)
fos.write(t);
document.add(new Paragraph(".."));
document.close();
}
catch (Exception e) {}
}
}
你有catch(Exception e){}' - 有没有任何'Exceptions'进入那个黑洞?此外,一般而言,您的方法(收集PDF字符串)将完全无视您的定位和字体编码。 – mkl
以下是上述捕获语句捕获的错误 org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将具有类'java.lang.Class'的对象'class com.lowagie.text.pdf.PRIndirectReference'转换为类' com.lowagie.text.pdf.PRIndirectReference' –
你还可以提供堆栈跟踪吗?和你使用的iText版本?我只能在你的代码中看到一个将'PRIndirectReference'转换为某个地方的地方,但假设原始类型'Class'没有意义。可能它在下面的某个地方。 – mkl