javapdf图表的简单介绍

博主:adminadmin 2023-01-27 06:51:07 415

今天给各位分享javapdf图表的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

使用java 怎么把pdf里的表格提取出来

java读取pdf是用pdfbox,这个没问题

但是你说的提取表格,这个需要你自己去解析

你提取出来的pdf文档getText可以获得文本,至于表格是什么格式的,要你自己把文本转成List之类的

Java操作pdf表格数据

用Java简单的读取pdf文件中的数据:

第一步:下载PDFBox-0.7.2.jar。提供一个下载地址: ;RID=20cd8f94-1cee-40b6-a3df-0ef024f8e0d2解压后,把lib文件下的PDFBox-0.7.2.jar,PDFBox-0.7.2-log4j.jar放到你classpath路径下。(我把源码以及jar包都放到下面的附件里,方面你的使用。)

第二步:写个简单的读取pdf文件的程序。(PdfReader.java)

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.pdfbox.pdmodel.PDDocument;

import org.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("E:\\SpringGuide.pdf");

} catch (Exception e) {

e.printStackTrace();

}

}

}

这样就简单的完成了从pdf中读取数据了。在你的pdf文件所在的目录下生成一个同名的txt文件。

java pdf图像

如果表的大小是相同的, 可以根据表格的像素值求得表的图片矩阵的奇异值,通过奇异值确定表格的位置,然后通过长和宽求得表的中心位置

怎么用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(70, 80, 490, 580);

RenderFilter filter = new RegionTextRenderFilter(rect);

TextExtractionStrategy strategy;

for (int i = 1; i = reader.getNumberOfPages(); i++) {

strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);

out.println(PdfTextExtractor.getTextFromPage(reader, i, strategy));

}

out.flush();

out.close();

reader.close();

}

PDFBOX插件方法PDDocument document = PDDocument.load( args[0] );

if( document.isEncrypted() )

{

document.decrypt( "" );

}

PDFTextStripperByArea stripper = new PDFTextStripperByArea();

stripper.setSortByPosition( true );

Rectangle rect = new Rectangle( 10, 280, 275, 60 );

stripper.addRegion( "class1", rect );

List allPages = document.getDocumentCatalog().getAllPages();

PDPage firstPage = (PDPage)allPages.get( 0 );

stripper.extractRegions( firstPage );

System.out.println( "Text in the area:" + rect );

System.out.println( stripper.getTextForRegion( "class1" ) );

java 解析pdf表格

最近在帮公司做工具,需要读取PDF中表格的数据。网上查了,大部分PDFBox读取的代码都大致相同,一行一行从头读到尾。尝试读取PDF表格的人可能会遇到表格有空数据时,列与列就会对不齐,这样就不能很好地进行数据的处理了。网上看到一个例子,用iText坐标精确读取的例子,参考以后出现了亚洲语种字体不支持,添加了语言包iTextAsian.jar导入字体后,结果发现打印的都是空格无法处理。后找到了PDFBox坐标读取的方法,相当给力。在此过程中了解到有很多人遇到了我这样的问题。所以写下来望对现在还未解决问题还有以后遇到此问题的人提供帮助。

上代码:

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 class ExtractTextByArea

{

javapdf图表的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javapdf图表的信息别忘了在本站进行查找喔。