java解析pdf文字顺序不对
发布时间:2025-05-13 19:09:57 发布人:远客网络
一、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");