您当前的位置:首页 > 互联网教程

java解析pdf文字顺序不对

发布时间:2025-05-13 19:09:57    发布人:远客网络

java解析pdf文字顺序不对

一、java解析pdf文字顺序不对

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

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

第一种使用开源组织提供的开源框架 pdfboxapi;

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

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

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

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

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

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

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

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)应用程序中。

二、java读取pdf文件的时候出现异常

当时想把pdf中的文字读取成txt文件,方便我的手机阅读,写了以下代码,解决了这个小问题

所需要的包:PDFBox-0.7.3.zip解压文件夹下:external下的全部,lib文件下的PDFBox-0.7.3.jar

注意:只能读取文本格式的pdf,如果pdf为图片格式的,本程序不能使用!

程序介绍:本程序将文本格式pdf中的文字读取出来,存入与pdf文件同文件名的TXT文本文档。

支持中文,但是在某些文字上会出现乱码.

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.net.MalformedURLException;

import org.pdfbox.pdmodel.PDDocument;

import org.pdfbox.util.PDFTextStripper;

public void readFdf(String file) throws Exception{

int endPage= Integer.MAX_VALUE;

//首先当作一个URL来装载文件,如果得到异常再从本地文件系统//去装载文件

URL url= new URL(pdfFile);//注意参数已不是以前版本中的URL.而是File。

document= PDDocument.load(pdfFile);

String fileName= url.getFile();

//以原来PDF的名称来命名新产生的txt文件

File outputFile= new File(fileName.substring(0, fileName

textFile= outputFile.getName();

} catch(MalformedURLException e){

//如果作为URL装载得到异常则从文件系统装载//注意参数已不是以前版本中的URL.而是File。

document= PDDocument.load(pdfFile);

if(pdfFile.length()> 4){ textFile= pdfFile.substring(0, pdfFile.length()- 4)

//文件输入流,写入文件倒textFile

output= new OutputStreamWriter(new FileOutputStream(textFile),

PDFTextStripper stripper= null;

stripper= new PDFTextStripper();

stripper.setSortByPosition(sort);

stripper.setStartPage(startPage);

System.out.print(stripper.getText(document));

stripper.setEndPage(endPage);

//调用PDFTextStripper的writeText提取并输出文本

stripper.writeText(document, output);

public static void main(String[] args){

Pdfreader pdfReader= new Pdfreader();

pdfReader.readFdf("d:\\2\\D.pdf");