我使用iText Pdf阅读器阅读pdf文件。之后我想在文本文件中保存内容。我正在使用以下代码。但这里的内容不是写入文件。在这里,我逐页阅读整个pdf,但如果只读一页则会写入文件。为什么此代码无法在指定的文本文件中保存整个内容。但是,此代码会打印控制台中的所有内容。任何人都可以帮助我,我错了吗?
public class PdfReadExample {
public static void main(String[] args) {
PdfReader reader;
String textFromPage;
BufferedWriter bw=null;
FileWriter fw=null;
try {
reader = new PdfReader("pdf location");
int nPages=reader.getNumberOfPages();
System.out.println(nPages);
for(int i = 1; i <=n Pages; i++){
textFromPage = PdfTextExtractor.getTextFromPage(reader, i);
System.out.println("page" + i + " " + textFromPage);
fw = new FileWriter("input.txt", true);
bw = new BufferedWriter(fw);
bw.write(textFromPage);
System.out.println(textFromPage);
}
reader.close();
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:5)
您正在循环中创建新的FileWriter
和BufferedWriter
。在循环开始时只创建一个并在循环内部使用它,而不是
for(int i=1;i<=nPages;i++){
textFromPage = PdfTextExtractor.getTextFromPage(reader, i);
System.out.println("page"+i+" "+textFromPage);
fw=new FileWriter("input.txt",true);
bw=new BufferedWriter(fw);
bw.write(textFromPage);
System.out.println(textFromPage);
}
DO
fw=new FileWriter("input.txt",true);
bw=new BufferedWriter(fw);
for(int i=1;i<=nPages;i++){
textFromPage = PdfTextExtractor.getTextFromPage(reader, i);
System.out.println("page"+i+" "+textFromPage);
bw.write(textFromPage);
}
另一方面注意:使用FileWriter创建一个使用系统编码将文本写入文件的编写器。这可能不是你想要使用的charset。最好使用new OutputStreamWriter(FileOutputStream, String)
并指定要明确使用的字符集。