pdfboxnet最新版本|java中读取Pdf格式文件出现错误

A. 怎么使用pdfbox 处理 pdf文件

PDF全称Portable Document Format,是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说明、公司文告、网络资料、电子邮件开始使用PDF格式文件。PDF格式文件目前已成为数字化信息事实上的一个工业标准。 Adobe公司设计PDF文件格式的目的是为了支持跨平台上的,多媒体集成的信息出版和发布,尤其是提供对网络信息发布的支持。为了达到此目的, PDF具有许多其他电子文档格式无法相比的优点。PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。该格式文件还可以包含超文本链接、声音和动态影像等电子信息,支持特长文件,集成度和安全可靠性都较高。 PDF文件使用了工业标准的压缩算法,通常比PostScript文件小,易于传输与储存。它还是页独立的,一个PDF文件包含一个或多个“页”,可以单独处理各页,特别适合多处理器系统的工作。此外,一个PDF文件还包含文件中所使用的PDF格式版本,以及文件中一些重要结构的定位信息。正是由于 PDF文件的种种优点,它逐渐成为出版业中的新宠。 对普通读者而言,用PDF制作的电子书具有纸版书的质感和阅读效果,可以“逼真地”展现原书的原貌,而显示大小可任意调节,给读者提供了个性化的阅读方式。由于PDF文件可以不依赖操作系统的语言和字体及显示设备,阅读起来很方便。这些优点使读者能很快适应电子阅读与网上阅读,无疑有利于计算机与网络在日常生活中的普及。Adobe公司以PDF文件技术为核心,提供了一整套电子和网络出版解决方案,其中包括用于生成和阅读PDF文件的商业软件Acrobat和用于编辑制作PDF文件的Illustrator等。 Adobe还提供了用于阅读和打印亚洲文字,即中日韩文字所需的字型包。 PDF的阅读 用Adobe公司的Arcobat Reader 7.0软件(该软件免费)即可阅读PDF文件。 更多信息请访问 Adobe 站点。www.adobe.com。 还有现在很多厂家的产品也能够浏览pdf,比如windows平台下的Apabi Reader,linux平台下的kpdf等等 pdf格式是很优秀的文档格式,我一般浏览都用它!

B. 如何搭建pdfbox1.80的fontbox.jar

pdfbox的ikvm版本和iTextSharp都不支持图片的提取,如果你想要这个功能,建议使用xpdf的pdftoimage(生成的是ppm,然后再转换成你想要的图片格式)。

C. java读取doc,pdf问题。

环境准备txt利用common-iopdf利用pdfbox剩下的用POI关于POI,读取xls没啥特别的,主要是读取doc和ppt,需要下载poi源代码,然后将poi-src-3.7-20101029.zip\poi-3.7\src\scratchpad\src下的所有文件到工程,或者自己封装个jar包jar包依赖code如下:package test;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.text.NumberFormat;import org.apache.commons.io.FileUtils;import org.apache.pdfbox.pdfparser.PDFParser;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.util.PDFTextStripper;import org.apache.poi.POIXMLDocument;import org.apache.poi.POIXMLTextExtractor;import org.apache.poi.hslf.HSLFSlideShow;import org.apache.poi.hslf.model.Slide;import org.apache.poi.hslf.model.TextRun;import org.apache.poi.hslf.usermodel.RichTextRun;import org.apache.poi.hslf.usermodel.SlideShow;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hwpf.extractor.wordExtractor;import org.apache.poi.openxml4j.exceptions.OpenXML4JException;import org.apache.poi.openxml4j.opc.OPCPackage;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.apache.poi.xwpf.extractor.XWPFWordExtractor;import org.apache.xmlbeans.XmlException;public class ReadFileUtils {/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {ReadFileUtils rf = new ReadFileUtils();String s = "";// s = rf.readTXT("E:/itsm文档的后缀名分析报告2.txt");// s = rf.readPDF("E:/memcached全面剖析.pdf");// s = rf.readEXCEL("E:/副本工作量及成本模板.xls");// s = rf.readEXCEL2007("E:/功能点估算方案.xlsx");// s = rf.readWORD("E:/pms中文.doc");// s = rf.readWORD2007("E:/功能点估算方法.docx");//s = rf.readPPT("E:/精细化管理信息系统项目汇报v1.0.ppt");s = rf.readPPT2007("e:/精细化管理信息系统项目汇报v1.0.pptx");System.out.println(s);}// 读取pptpublic String readPPT(String file) throws IOException {StringBuilder sb = new StringBuilder();SlideShow ppt = new SlideShow(new HSLFSlideShow(file));Slide[] slides = ppt.getSlides();//提取文本信息 for (Slide each : slides) { TextRun[] textRuns = each.getTextRuns(); for (int i=0 ;i< textRuns.length; i++ ) { RichTextRun[] richTextRuns = textRuns.getRichTextRuns(); for (int j = 0; j < richTextRuns.length; j++) { sb.append(richTextRuns[j].getText()); } sb.append("\n"); } sb.append("\n");}return sb.toString();}// 读取pptxpublic String readPPT2007(String file) throws IOException, XmlException, OpenXML4JException { return new XSLFPowerPointExtractor(POIXMLDocument.openPackage(file)).getText(); }// 读取xls文件public String readEXCEL(String file) throws IOException {StringBuilder content = new StringBuilder();HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));// 创建对Excel工作簿文件的引用for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {if (null != workbook.getSheetAt(numSheets)) {HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheetfor (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {if (null != aSheet.getRow(rowNumOfSheet)) {HSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {if (null != aRow.getCell(cellNumOfRow)) {HSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值if (this.convertCell(aCell).length() > 0) {content.append(this.convertCell(aCell));}}content.append("\n");}}}}}return content.toString();}// 读取xlsx文件public String readEXCEL2007(String file) throws IOException {StringBuilder content = new StringBuilder();XSSFWorkbook workbook = new XSSFWorkbook(file);for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {if (null != workbook.getSheetAt(numSheets)) {XSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheetfor (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {if (null != aSheet.getRow(rowNumOfSheet)) {XSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {if (null != aRow.getCell(cellNumOfRow)) {XSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值if (this.convertCell(aCell).length() > 0) {content.append(this.convertCell(aCell));}}content.append("\n");}}}}}return content.toString();}private String convertCell(Cell cell) {NumberFormat formater = NumberFormat.getInstance();formater.setGroupingUsed(false);String cellValue = "";if (cell == null) {return cellValue;}switch (cell.getCellType()) {case HSSFCell.CELL_TYPE_NUMERIC:cellValue = formater.format(cell.getNumericCellValue());break;case HSSFCell.CELL_TYPE_STRING:cellValue = cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_BLANK:cellValue = cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_BOOLEAN:cellValue = Boolean.valueOf(cell.getBooleanCellValue()).toString();break;case HSSFCell.CELL_TYPE_ERROR:cellValue = String.valueOf(cell.getErrorCellValue());break;default:cellValue = "";}return cellValue.trim();}// 读取pdf文件public String readPDF(String file) throws IOException {String result = null;FileInputStream is = null;PDDocument document = null;try {is = new FileInputStream(file);PDFParser parser = new PDFParser(is);parser.parse();document = parser.getPDDocument();PDFTextStripper stripper = new PDFTextStripper();result = stripper.getText(document);} finally {if (is != null) {is.close();}if (document != null) {document.close();}}return result;}// 读取doc文件public String readWORD(String file) throws Exception {String returnStr = "";try {WordExtractor wordExtractor = new WordExtractor(new FileInputStream(new File(file)));returnStr = wordExtractor.getText();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return returnStr;}// 读取docx文件public String readWORD2007(String file) throws Exception { return new XWPFWordExtractor(POIXMLDocument.openPackage(file)).getText(); }// 读取txt文件public String readTXT(String file) throws IOException {String encoding = ReadFileUtils.get_charset(new File(file));if (encoding.equalsIgnoreCase("GBK")) {return FileUtils.readFileToString(new File(file), "gbk");} else {return FileUtils.readFileToString(new File(file), "utf8");}}private static String get_charset(File file) throws IOException {String charset = "GBK";byte[] first3Bytes = new byte[3];BufferedInputStream bis = null;try {boolean checked = false;bis = new BufferedInputStream(new FileInputStream(file));bis.mark(0);int read = bis.read(first3Bytes, 0, 3);if (read == -1)return charset;if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {charset = "UTF-16LE";checked = true;} else if (first3Bytes[0] == (byte) 0xFE&& first3Bytes[1] == (byte) 0xFF) {charset = "UTF-16BE";checked = true;} else if (first3Bytes[0] == (byte) 0xEF&& first3Bytes[1] == (byte) 0xBB&& first3Bytes[2] == (byte) 0xBF) {charset = "UTF-8";checked = true;}bis.reset();if (!checked) {// int len = 0;int loc = 0;while ((read = bis.read()) != -1) {loc++;if (read >= 0xF0)break;if (0x80 <= read && read <= 0xBF) // 单独出现BF以下的,也算是GBKbreak;if (0xC0 <= read && read <= 0xDF) {read = bis.read();if (0x80 <= read && read <= 0xBF) // 双字节 (0xC0 – 0xDF)// (0x80// – 0xBF),也可能在GB编码内continue;elsebreak;} else if (0xE0 <= read && read <= 0xEF) {// 也有可能出错,但是几率较小read = bis.read();if (0x80 <= read && read <= 0xBF) {read = bis.read();if (0x80 <= read && read <= 0xBF) {charset = "UTF-8";break;} elsebreak;} elsebreak;}}// System.out.println( loc + " " + Integer.toHexString( read )// );}} catch (Exception e) {e.printStackTrace();} finally {if (bis != null) {bis.close();}}return charset;}}

D. maven怎么依赖pdfbox

所有的maven project都有一个pom.xml文件,打开pom.xml,找到dependency tag:<dependencies></dependencies>所在的位置;然后到 maven repository中找到你所需要的包;进入jar包,点选相应的版本,然后页面中就会有加入maven project的dependency,类似下面的内容:[html] view plain <dependency> <groupId>org.broadleafcommerce</groupId> <artifactId>broadleaf-framework</artifactId> <version>3.0.12-GA</version> </dependency> 将这个语句片拷下来,放到你的project中的pom.xml文件的<dependencies></dependencies>中。保存pom.xml文件,project就会自动build,将所需要的jar包导入到项目中,在Maven Dependencies目录下。

E. c#读取pdf文件里面数据!!

你可以试一下 Grapecity Documents For PDF。这是一款.NET PDF 文档API,适用于所有 .NET Standard 2.0 及以上标准的平台,以编码的方式,无需 Adobe Acrobat 组件 ,超快批量处理 PDF 文件,满足关于 PDF 文档的一切需求。网页链接

这里是Grapecity Documents For PDF 的使用指南,里面有关于加载、分析、修改现有 PDF 文档的具体方法网页链接

Grapecity Documents For PDF 最大的特色总结如下:

产品架构灵活、轻量

轻量级产品架构可节省系统处理 PDF 时占用的内存和时间。与同类产品相比,GrapeCity Documents for PDF 可用于生成更高质量的 PDF 文档。

完全兼容 Adobe PDF

GrapeCity Documents for PDF 符合 Adobe PDF 1.7 规范,可在不影响 PDF 文档功能和设计的情况下,完成创建、编辑、存储、合并、拆分等多种功能。

全文本支持

GrapeCity Documents for PDF 支持 PDF 文档的所有文本和段落格式,同时还支持特殊字符、多种语言(包括中文)、RTL 格式、垂直拆分和旋转文本。

100 种以上的 PDF 功能

使用 GrapeCity Documents for PDF,您可以随意添加、删除、拷贝、移动、保护、更改页面大小、方向、转换为线性化 PDF 以及压缩 PDF 文件。

全面支持 .NET 平台

GrapeCity Documents for PDF 支持所有 .NET 平台,并允许您在应用程序中与 .NET Core 2.0 +、.NET Framework、Mono、Xamarin.iOS 和 Xamarin.Android 一起使用。

将应用程序部署到云端

GrapeCity Documents 可用于云应用程序开发,使用 NuGet 和 GrapeCity Documents for PDF,您可直接部署到网络云、阿里云、腾讯云、Azure 和 AWS 中。

简单来说,使用 GrapeCity Documents for PDF 可以轻松实现:

可生成线性化 PDF 文档,通过 Internet 更快地进行查看

用代码生成、加载、编辑、合并/拆分大型 PDF 文档

支持多种语言(如中文)、特殊字符以及 RTL 格式

支持 100 种以上的 PDF 功能

其他核心功能网页链接

F. java中读取Pdf格式文件出现错误

缺包吧? 找不到类呀

G. 如何建立PDFBox的对于.NET

用VS2010建立空白解决方案 三层结构,会有多个项目。为了让各项目之间的关系反映在目录结构上所以要建立一个解决方案。 1.建立解决方案: 文件->新建项目->其它项目类型->Visual Studio解决方案->空白解决方案。

H. 数据库及pdf文件输出

【C++库】PDF类库 PoDoFo http://podofo.sourceforge.net/PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库。它还包含一些小工具用来解析、修改和创建 PDF 文档。Xpdfhttp://www.foolabs.com/xpdf/download.htmlXpdf是一个开放源代码的PDF档案浏览器,Xpdf 可解码LZW压缩格式并阅读加密的PDF文件。PDF生成工具 Poppler http://poppler.freedesktop.org/Poppler 是一个用来生成 PDF 的C++类库,从xpdf 继承而来。它使用了很多先进的类库例如 freetype 和 cairois 来达到更好的输出效果,同时也提供了一组命令行工具包。JagPDF http://www.jagpdf.com/JagPDF 提供给 C/C++ 和 Python 编程语言用来生成 PDF 文档的库。libHaruhttp://libharu.org/wiki/Downloads开源的PDF库CLibPDFhttp://hpux.connect.org.uk/hppd/hpux/Shells/ClibPDF-2.02/ClibPDF是C函数库,可以直接生成PDF文件, 不需要Adobe Acrobat等工具支持.————————————————————————【JAVA库】PDF操作类库 iTexthttp://www.lowagie.com/iText/iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。PDFBox http://www.pdfbox.org/非常强悍的PDF生成和解析Java类库jpedalhttp://www.jpedal.org/jpedal是开源纯Java的PDF文档解析库,可以用来读取PDF文档中的文字、图形。JasperReports http://jasperforge.org/plugins/project/project_home.php?group_id=102JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports 支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。Fourfive http://sourceforge.net/projects/fourfiveFourfive是一个领先的开源Web报表解决方案,使用XML作为它的配置文件。支持集群、负载平衡、动态发布、PDF, Excel, LDAP,图表、过滤器、排序、布局定制、门户、JasperReports、Velocity模板、兼容Internet Explorer, Netscape, Mozilla, Opera。FOP http://xmlgraphics.apache.org/fop/FOP是由James Tauber发起的一个开源项目,原先的版本是利用xsl-fo将xml文件转换成pdf文件。但最新的版本它可以将xml文件转换成pdf,mif,pcl,txt等多种格式以及直接输出到打印机,并且支持使用SVG描述图形。JFreeReport http://sourceforge.net/projects/jfreereport/JFreeReport是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF, Excel, HTML和XHTML, PlainText, XML和CSV文件中。YaHP http://www.allcolor.org/YaHPConverter/YaHP是一个能够把html文档转换成pdf文档的Java开源包。PDFjet http://pdfjet.com/os/edition.htmlPDFjet是一个用于动态生成PDF文档的Java类库。支持绘制点、线、方框、圆、贝塞尔曲线(Bezier Curves) 、多边形、星形、复杂路径和形状。支持unicode,文本间距调整,嵌入超链接等。它同时有Java和.NET两个版本。vPDF http://sourceforge.net/projects/vpdf/一个将RTF文档转成PDF文档的工具【.NET组件】————————————————–iTextSharp http://itextsharp.sourceforge.net/iTextSharp 是用来生成 PDF 文档的 C# 组件PDFsharp http://www.pdfsharp.com/PDFsharp is a C# library that easily creates PDF documents on the fly. The same GDI+ like drawing routines can be used to create PDF documents, draw on the screen, or send output to any printer. PDFsharp can also modify, merge, and split existing PDF files or incorporate pages from existing PDF files into new PDF documents.Report.NET http://report.sourceforge.net/Report.NET 是一个功能强大且易用的用来生成 PDF 文档的 C# 组件———————————————————————【PHP】Php Pdf Factory http://sourceforge.net/projects/pdf-factory/一个PHP的PDF操作库。TCPDF http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdfTCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进。支持UTF-8,Unicode,HTML和XHTML。HTML2PDF http://html2fpdf.sourceforge.net/HTML2PDF能够把一个HTML文本转换成一个打印机友好的PDF文件。这个PHP脚本构建在FPDFPHP脚本之上。cPdfWriter http://www.palos.ro/index.php?page=opensource_activecPdfWriter是一个能够输出PDF文档的PHP5 class。基于TCPDF,FPDF和其它相关脚本。FPDF http://www.fpdf.org/FPDF这个PHP Class允许你采用纯PHP(更确切地说就是不需要使用PDFlib)来生成PDF文件。它所具有的特点包括:可选择的unit大小,页面格式和页边 距;页眉和页脚管理;自动分页;自动换行与文本自动对齐;支持JPEG与PNG图片格式;支持着色和文件超链接;支持TrueType,Type1与 encoding;支持页面压缩。…————————————————————————【Python和Ruby】Prawn http://prawn.majesticseacreature.com/Prawn: 用Ruby生成PDF更简捷ReportLab http://www.reportlab.org/Reportlab是用python开发的生成pdf的工具包,它是一个开源软件。PDF生成工具 pyPdfPyPDF这是一个用于构建PDF的纯Python工具包


赞 (0)