java解析pdf文件,求大神提供代码,请注意是java语言的

我想要的是使用程序去解析pdf文件,如果某个pdf文件无法打开的(注意这个无法打开是直接点击时提示是pdf文件格式错误无法打开,和pdf文件已经损坏差不多一个意思),把路径打印出来,能打开的则把pdf内容写到一个txt中。

给你提供一个参考例子,你可以在这个例子上试试,修改修改。也是解析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();    
   }    
  }    
 }

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-29
zuanshigan这份代码没问题。简单补充一下吧,这份代码用的是Apache的PDFBox,功能很强大。可以看一下官网:http://pdfbox.apache.org/
不过估计楼主这种功能用itext应该也足够了,具体在这里:http://itextpdf.com/
而且itext使用起来相对简单一点吧(个人认为),判断pdf是否损坏可以直接用打开方法,如果没报错就是正常,捕获错误或者读取页数为0就是错误。以上。追问

直接打开时提示格式错误,使用itext打开,直接提示这个文件损坏,也不抛出异常,pdfbox也是一样,我想要的不是提示文件损坏就完事,而是要抛出这个文件损坏的异常之类的,请问你有什么方法解决吗?

追答

可以判断第三方jar包返回的信息,然后自己定义异常抛出吧
throw new Exception这样子的。。。

第2个回答  2013-09-29
补充一点吧,不是所有的pdf都可以读取的,有些通过保护方式,禁止复制的话,使用pdfbox也没用
第3个回答  2017-08-16
你需要引入一个java的pdf框架.
我经常用的一个pdf框架是itext.你可以上网查一下api
2017年8月16日 11:23:13

java解析pdf文件,求大神提供代码,请注意是java语言的
回答:补充一点吧,不是所有的pdf都可以读取的,有些通过保护方式,禁止复制的话,使用pdfbox也没用

我想问下 JAVA中 如何读取PDF文件里面的内容 谁给个详细的 例子...
第一步:下载PDFBox-0.7.2.jar。提供一个下载地址:http:\/\/pdfhome.hope.com.cn\/Resource.aspx?CID=63844604-5253-4ae1-b023-258c9e324061&RID=20cd8f94-1cee-40b6-a3df-0ef024f8e0d2解压后,把lib文件下的PDFBox-0.7.2.jar,PDFBox-0.7.2-log4j.jar放到你classpath路径下。(我...

java 解析pdf表格
上代码:package com.pdfbox.util.test;import org.apache.pdfbox.exceptions.InvalidPasswordException;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.util.PDFTextStripperByArea;import java.awt.Rectangle;import java.util.List;public c...

用java如何解析pdf文件
对于PDF文档,iText还提供了文档的显示属性,通过调用书写器的setViewerPreferences方法可以控制文档打开时Acrobat Reader的显示属性,如是否单页显示、是否全屏显示、是否隐藏状态条等属性。 另外,iText也提供了对PDF文件的安全保护,通过书写器(Writer)的setEncryption方法,可以设定文档的用户口令、只读、可打印等属性。 添加文档...

用java读取pdf
import java.io.InputStream;import java.io.IOException;import org.apache.lucene.document.Document;import org.pdfbox.cos.COSDocument;import org.pdfbox.pdfparser.PDFParser;import org.pdfbox.pdmodel.PDDocument;import org.pdfbox.pdmodel.PDDocumentInformation;import org.pdfbox.util.PDFTextStripper...

Java 加密、解密PDF文档
方法1:从官方网站下载Jar包,解压后,将lib文件夹下的jar文件导入Java程序。方法2:通过Maven导入。详细步骤参考。以下是加密PDF文档的Java代码示例:编写并运行代码后,生成加密文档。输入密码后,可以查看加密文档的效果。同时,本文提供了解除PDF密码保护的代码示例。总结,通过Java编程,您可以灵活地对PDF...

java处理pdf文件
1、客户机上要有PDF2、URL url =new URL("file:\/\/\/"+ 你的文件路径);response.setContentType(url.openConnection().getContentType());response.setHeader("Content-Disposition", "inline; filename="+ 文件名);或在jsp页面中加入 <% response.setHeader("Content-disposition", "attachm...

java 解析pdf
把properties属性里的java compiler-->building-->abort build when build path errors occur 前的勾去掉了

如何用java程序解密pdf文件 速度
对于不允许做修改的PDF文件——就是加密加了权限的PDF,首先要去除密码或者去除数字证书,推荐用PDF Password Remove

怎么用java读取pdf中的表格
ITEXT插件方法 \/ param pdf PDF文件路径 param txt 输出文本文件路径 throws IOException \/ public void parsePdf(String pdf, String txt) throws IOException { PdfReader reader = new PdfReader(pdf);PrintWriter out = new PrintWriter(new FileOutputStream(txt));Rectangle rect = new Rectangle(...

相似回答