开发者社区> 问答> 正文

java读取pdf文件内容:报错

 

import java.io.File;   
import java.io.FileOutputStream;   
import java.io.OutputStreamWriter;   
import java.io.Writer;   
import java.net.MalformedURLException;   
import java.net.URL;   

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;

 public class PdfReader {   
 public void readFdf(String file) throws Exception {   
  // 是否排序   
  boolean sort = false;   
  // pdf文件名   
  String pdfFile = file;   
  // 输入文本文件名称   
  String textFile = null;   
  // 编码方式   
  String encoding = "UTF-8";   
  // 开始提取页数   
  int startPage = 1;   
  // 结束提取页数   
  int endPage = Integer.MAX_VALUE;   
  // 文件输入流,生成文本文件   
  Writer output = null;   
  // 内存中存储的PDF Document   
  PDDocument document = null;   
  try {   
   try {   
    // 首先当作一个URL来装载文件,如果得到异常再从本地文件系统//去装载文件   
    URL url = new URL(pdfFile);   
   //注意参数已不是以前版本中的URL.而是File。   
    document = PDDocument.load(pdfFile);   
    // 获取PDF的文件名   
    String fileName = url.getFile();   
    // 以原来PDF的名称来命名新产生的txt文件   
    if (fileName.length() > 4) {   
     File outputFile = new File(fileName.substring(0, fileName   
       .length() - 4)   
       + ".txt");   
     textFile = outputFile.getName();   
    }   
   } catch (MalformedURLException e) {   
    // 如果作为URL装载得到异常则从文件系统装载   
   //注意参数已不是以前版本中的URL.而是File。   
    document = PDDocument.load(pdfFile);   
    if (pdfFile.length() > 4) {   
     textFile = pdfFile.substring(0, pdfFile.length() - 4)   
       + ".txt";   
    }   
   }   
   // 文件输入流,写入文件倒textFile   
   output = new OutputStreamWriter(new FileOutputStream(textFile),   
     encoding);   
   // PDFTextStripper来提取文本   
   PDFTextStripper stripper = null;   
   stripper = new PDFTextStripper();   
   // 设置是否排序   
   stripper.setSortByPosition(sort);   
   // 设置起始页   
   stripper.setStartPage(startPage);   
   // 设置结束页   
   stripper.setEndPage(endPage);   
   // 调用PDFTextStripper的writeText提取并输出文本   
   stripper.writeText(document, output);   
  } finally {   
   if (output != null) {   
    // 关闭输出流   
    output.close();   
   }   
   if (document != null) {   
    // 关闭PDF Document   
    document.close();   
   }   
  }   
 }   
 /**  
  * @param args  
  */  
 public static void main(String[] args) {   
  // TODO Auto-generated method stub   
  PdfReader pdfReader = new PdfReader();   
  try {   
   // 取得E盘下的SpringGuide.pdf的内容   
   pdfReader.readFdf("d:\\b.pdf");   
  } catch (Exception e) {   
   e.printStackTrace();   
  }   
 }   
    


}


原文链接: http://blog.csdn.net/wangxiaojing123/article/details/7313248

展开
收起
kun坤 2020-06-07 14:16:50 1224 0
1 条回答
写回答
取消 提交回答
  • 问个问题啊,我的程序读取PDF写入到TXT文档里面死活写不进去,求直接。就是stripper.writeText(document, output);  这个方法感觉没执行一样######还有 stripper.writeText('','')这个方法的第二个参数我在有些地方看到的入参是 OutputStreamWriter 有的是其他的######

    现在刚下的PDFBOX的jar包都1.8.1了,是不是原方法不可用了啊

     

    ######

    icepdf 转换pdf文件为图片,出现空白图片 发现pdf文件时具有锁的加密文件(可打开查看的)有木有类似经验呢,求解

    2020-06-07 14:16:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载