java解析pdf文字顺序不对

Python011

java解析pdf文字顺序不对,第1张

修复你的PDF软件或者调整页面顺序。

java解析pdf获取pdf中内容信息:

第一种 使用开源组织提供的开源框架 pdfboxapi ; https://pdfbox.apache.org/

特点:免费,功能强大,解析中文或许会存在乱码,默认格式有点乱,没有国产解析的那么美化。

想要按行读取:可以按照指定的模板,对pdf进行修改添加删除等操作,总之操作很骚,很强大。

1.pdfbox 需要带入依赖。

2.代码。

第二种使用国产的框架 Spire.PDF包含两种版本。

1 免费版。

https://www.e-iceblue.cn/Downloads/Free-Spire-PDF-JAVA.html

友情提示: 免费版有 10 页的页数输出限制,在输出结果文档时只能输出前10页。将 PDF 文档转换为图片、Word、HTML、XPS等格式时,仅支持转换前 10 页。如超出限制,可升级到商业版,我们仅对免费版进行不定期维护。

2 商业版本。

https://www.e-iceblue.cn/Introduce/Spire-PDF-JAVA.html。

api。

http://e-iceblue.cn/licensing/install-spirepdf-for-java-from-maven-repository.html。

特点:商业版本收费,免费版本有限制,可供开发人员调试,解析格式友好,解析结果是按照行显示,对pdf 图形 ,水印 ,文本, 条形码等添加增删改操作,总之个人感觉比pdfbox顺手,但就是收费啊,谁让咱公司没钱呢。

主要功能:

只需 Free Spire.PDF for Java,无需 Adobe Acrobat。

Free Spire.PDF for Java 是一款完全独立的 PDF 类库。它的运行环境无需安装 Adobe Acrobat 或其他任何第三方组件。

多样化的PDF文档操作功能。

Free Spire.PDF for Java 支持画文本、图片、表格、条形码、形状到 PDF,提取文本和图片,创建、填充和删除 PDF 表单,添加文本/图片水印到 PDF,添加、更新和删除 PDF 书签,操作超链接、附件和注释,以及添加图片/文本印章到 PDF 等。

文档信息设置。

Free Spire.PDF for Java 支持设置 PDF 文档信息,例如文档属性设置,偏好设置(页面方向,页面大小,缩放比例等)。

高质量的文档转换功能。

Free Spire.PDF for Java 支持将 PDF 文档高质量地转换为 Word、HTML、XPS、图片、SVG 和 PDF/A 格式,以及将 XPS 文档高质量地转换为 PDF 格式。

文档安全性设置。

Free Spire.PDF for Java 支持给 PDF 文档添加和验证数字签名,加密和解密 PDF 文档,修改 PDF 文档的安全权限,以及检测签名后的 PDF 文档是否被修改。

易于集成。

开发人员可以轻易地将 Free Spire.PDF for Java 集成到 Java(J2SE和J2EE)应用程序中。

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

   }    

  }    

 }

在我们需要解除pdf密码时,可以借助工具解除或者直接关闭密码,以下是详细操作步骤:

工具/原料:RedmiBook14、Windows10、嗨格式PDF转换器3.4.183.529&&Adobe Acrobat Pro DC2019.012.20040

方法1

1、点击pdf解密

打开嗨格式PDF转换器后,点击“PDF加密/解密”功能。

2、添加文件

点击“PDF解密”,点击软件中间区域添加PDF文件。

3、点击开始解密

PDF文件添加好后,点击“开始解密”。

4、输入密码

接着输入PDF文件的密码,点击“开始解密”PDF解密完成,点击“打开文件”即可。

方法2

1、进入网站

进入Smallpdf网站,点击“探索所有PDF工具”。

2、点击解锁PDF

然后点击下方的“解锁PDF”。

3、添加PDF文件

在解锁PDF网页中,点击“选择文件”,添加PDF文件。

4、勾选条例

文件上传好后,勾选“我发誓我有权编辑此文件并删除其保护”,点击“解锁PDF”。

5、点击真正解锁

输入文件密码,点击“真正解锁”。

6、保存文件

解锁完成直接网页打开文件,点击右边“下载”保存文件即可。