`

操作PDF文档功能的相关开源项目探索—iTextSharp 和PDFBox

 
阅读更多

转自www.th7.cn第七城市

操作 PDF 文档功能的相关开源项目探索—iTextSharp 和PDFBox

2010-4-16来源:cnblogs.com 作者:无痕客 点击:次
今天我主要是研究学习了两个PDF 文档的相关类,iTextSharp 和PDFBox。我研究出发点是实现PDF 文档的检索,需要提取PDF 文档中的文字内容,然后通过正则匹配实现搜索。

  《类似Windows Search的文件搜索系统 》中介绍的文件检索方法是很不错的,但它里面对PDF 中的中文检索不支持,因为里面调用的iTextSharp不能很好地支持英文,PdfReader类的GetPageContent()方法无法正常返回中文字符,经我测试,并非简单的编码问题。所以,急需能够从PDF 中提取text功能。

      我首先学习iTextSharp.dll 下载:http://sourceforge.net/projects/itextsharp/   这里面有很多输出PDF 文档的简单例子(下载iTextSharp例子 ),在学习中发现,不支持中文内容输出。在网上搜索相关内容发现,原来是缺少字体库。有两种方法解决:

  1.自己指定系统的字体库,创建PDF 中使用的字体。参见:http://unruledboy.cnblogs.com/Skins/ChinaHeart/Controls/archive/2005/08/30/225984.html

            Document document = new Document(PageSize.A4,50, 50, 50, 50);
            try
            {
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("Chap11.pdf ", FileMode.Create));

      //下面是创建PDF 文档加密的
               //writer.SetEncryption(PdfWriter.STRENGTH40BITS,"654321", "654321", PdfWriter.AllowCopy);  
                document.Open();

      //指定字体库,并创建字体
                BaseFont baseFont = BaseFont.CreateFont(
                    "C:\\WINDOWS\\FONTS\\SIMHEI.TTF",
                    BaseFont.IDENTITY_H,
                    BaseFont.NOT_EMBEDDED);
                iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, 9); 

               //指定输出内容的字体

      document.Add(new Paragraph(" This document is Top Secret! ", font ));
                document.Close();
            }
            catch (Exception de)
            {
                Console.WriteLine(de.StackTrace);
            }

       2.从http://sourceforge.net/projects/itextsharp/  下载扩展字体库iTextAsianCmaps.dll 和iTextAsian.dll,支持亚洲字体。

    下载界面如下:

 

   

 

        /// <summary>
        /// 创建中文字体(实现中文)
        /// </summary>
        /// <returns></returns>
        public static iTextSharp.text.Font CreateChineseFont()
        {
            BaseFont.AddToResourceSearch("iTextAsian.dll");
            BaseFont.AddToResourceSearch("iTextAsianCmaps.dll"); //"STSong-Light", "UniGB-UCS2-H",
            BaseFont baseFT=BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);

            iTextSharp.text.Font font = new iTextSharp.text.Font(baseFT);
            return font;
        }

  "UniGB-UCS2-H" "UniGB-UCS2-V"是简体中文。 "STSong-Light"是字体名称。BaseFont.EMBEDDED是将字体嵌入文档内。

  其次,我接下来尝试在使用iTextSharp读对象类时,指定字体库,可是很遗憾没有相应方法。请参照:http://www.cnblogs.com/diction/articles/1120984.html  (提取文本不支持中文)而且,即使有也很不灵活,因为你不可能预知PDF 文档中使用的字体,PDF 文档中可能有多种字体。后来,搜索网页相关信息发现:原来iTextSharp的操作PDF 文档优势是PDF 文档的创建。

  需求是学习和工作的动力

     我的原始目标是找到PDF 文档内容提取为文本的方法,我转向《How to parse PDF files》  该文章完整讲述了PDF 文档提取文本的方法和整个解决过程思路,我会单独转载该文章,希望不能访问国外网的网友也能看到。PDFBox的下载http://sourceforge.net/projects/pdfbox/files/  下载解压后里面内容很丰富,

所有需要的dll都包含在Bin文件夹里面

 

 

  "PDFBox is a Java PDF Library. This project will allow access to all of the components in a PDF document. More PDF manipulation features will be added as the project matures. This ships with a utility to take a PDF document and output a text file. "

  PDFBox是个JAVA开源项目,里面使用IKVM.NET开源项目http://www.ikvm.net/  支持JAVA类库在.NET中调用。

  IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework . It includes the following components:

  • A Java Virtual Machine implemented in .NET
  • A .NET implementation of the Java class libraries
  • Tools that enable Java and .NET interoperability

  对IKVM.NET的学习,对以后在.NET下使用JAVA类库很有帮助,其实IKVM.Runtime.dll 就是封装了JAVA类库的运行环境。

需要添加的DLL有:FontBox-0.1.0-dev.dll、IKVM.GNU.Classpath.dll、IKVM.Runtime.dll、PDFBox-0.7.3.dll

PDFBox使用实例代码如下:请参照:http://www.cnblogs.com/wuhenke/archive/2010/04/16/1713949.html

        private static string parseUsingPDFBox(string filename)
        {
            PDDocument doc = PDDocument.load(filename);

            PDFTextStripper stripper = new PDFTextStripper();
           
            return stripper.getText(doc);
        }

PDFBox功能很强大,有时间值得好好学习一下。

 

 

参考:

http://www.codeproject.com/kb/cpp/ExtractPDFText.aspx?df=100&forumid=47947

http://www.codeproject.com/KB/string/pdf 2text.aspx

http://www.cnblogs.com/hardrock/

http://www.ikvm.net/

分享到:
评论

相关推荐

    利用ITEXT、PDFBOX将PDF转为图片

    接下来,PDFBOX是Apache软件基金会的一个开源项目,它提供了一系列API来处理PDF文档。PDFBOX的功能包括创建、编辑、显示PDF文档,以及将PDF转换为其他格式,如图片。在PDF转图片的过程中,PDFBOX扮演了关键角色。 ...

    PDFBox-0.7.3.rar

    1. **PDF文档生成**:PDFBox提供了API,使得开发者能够创建新的PDF文档,添加页面,设置页面布局,插入文本和图像,并对文档进行排版。 2. **PDF文档解析**:可以读取已存在的PDF文档,提取文本、图像、元数据等...

    C# pdfbox解析pdf文字及图片(源码)

    本篇文章将详细介绍如何使用C#结合PDFBox库来解析PDF文档中的文字和图片。 首先,你需要将PDFBox库引入到C#项目中。这通常通过NuGet包管理器完成,搜索并安装相关的.NET包装,如PDFBox.NET。确保安装完成后,你可以...

    PDF压缩c#版本

    它支持.NET Framework和.NET Core平台,涵盖了各种PDF处理场景,如创建、编辑、合并、分割、加密、解密PDF文档,以及添加水印、注释、表单等。在图片压缩方面,Spire.Pdf提供了高效的方法,可以调整图片质量,从而...

    C# PDF操作类 PDF

    在IT领域,尤其是在软件开发中,C#是一种广泛使用的编程语言,它提供了强大的库和工具来处理各种任务,包括PDF文档的操作。PDF(Portable Document Format)是一种通用的文件格式,用于存储和分享文档,保持其原始...

    C#生成PDF 读取PDF文本内容 获取PDF内图片(亲测可用)

    以iTextSharp为例,这是一个开源的PDF库,可以创建、修改和处理PDF文档。使用iTextSharp,你可以创建新的PDF文档,添加页面,设置字体,插入文本,甚至绘制图形。例如,创建一个简单的PDF文档可以如下所示: ```...

    C#生成PDF 读取PDF文本内容 获取PDF内图片--完整版)

    在C#中生成PDF文档,我们可以使用开源库如iTextSharp或PDFsharp。iTextSharp适用于.NET Framework,而PDFsharp支持.NET Core。这两个库提供了创建PDF页面、添加文本、图形和图像的方法。例如,使用iTextSharp,你...

    pdfbox1.6.0 dll 下载

    1. **pdfbox-app-1.6.0.dll**:这是主要的PDFBox应用层的DLL文件,它包含了处理PDF文档的主要功能。开发者可以通过这个库来实现读取、写入、修改PDF文档,以及其他如添加文本、图像、元数据等操作。 2. **IKVM....

    显示PDF文档在WinForm上

    - **PDFBox**:这是一个开源的Java库,可以用来读取、写入和操作PDF文档,如果你的WinForm应用是基于.NET与Java混合开发,PDFBox可以提供帮助。 - **iTextSharp**:这是.NET平台上的一个强大的PDF处理库,可以用于...

    pdfbox 1.3.1 dll .net版本

    PDFBox是Apache软件基金会的一个开源项目,主要用于处理PDF文档,提供了读取、创建、修改PDF文档的功能。在.NET环境中,如果你需要与PDF交互,通常会寻找兼容的库,这个"pdfbox 1.3.1 dll .net版本"就是专门为.NET...

    PDF第三方解析汇总

    1. **PDFBox**:PDFBox是Apache软件基金会的一个开源项目,提供Java API用于读取、创建、修改和操作PDF文档。它支持提取文本、元数据,甚至可以处理PDF中的图像和注释。在C#环境中,可以通过 IKVM.NET 将Java库转换...

    C#中PDF文件转WORD文件(完整版)

    PDF文档通常是以页面为单位的,需要逐页处理。 - **转换为Word格式**:根据解析出的内容,使用Aspose.Words或Spire.PDF等库创建一个新的Word文档,并逐个添加元素。这可能涉及文本流的构建、样式应用、图像插入等...

    .NET生成PDF 读取PDF文本内容 获取PDF内图片

    iTextSharp是一个开源的PDF库,适用于.NET Framework和.NET Core,它提供了丰富的API来创建、修改和处理PDF文档。PDFsharp则是一个功能强大的库,用于生成、修改和合并PDF文档,同样支持.NET Framework和.NET Core。...

    pdf转文本的exe文件

    总结来说,这个"pdf转文本的exe文件"结合了PDFBox的PDF处理能力、百度OCR服务的高级文字识别以及iTextSharp的PDF操作功能,为用户提供了一种便捷的方式将PDF文档转换为可编辑的文本格式。这样的工具在学术研究、文档...

    C#生成PDF 读取PDF文本内容 获取PDF内图片.rar_.net_C# pdf_C#PDF_pdf_winform

    以iTextSharp为例,这是一个流行的PDF处理库,可以方便地创建、编辑和读取PDF文档。要生成PDF,你需要先安装iTextSharp库,然后通过创建PdfDocument对象,并添加PdfPage来构建PDF结构。在页面上添加文本和图形则可以...

    C#生成PDF 读取PDF文本内容 获取PDF内图片(201903)

    iTextSharp是一个开源库,支持.NET框架,可以创建、修改和操作PDF文档。使用iTextSharp,开发者可以通过添加段落、设置字体、插入表格等方式构建PDF内容。PDFsharp则提供了更全面的功能,包括创建、合并、编辑和打印...

    用VS2017 C#把PDF文档转换成文本

    本篇文章将深入探讨如何使用Visual Studio 2017(VS2017)和C#编程语言将非扫描版PDF文档转换为文本。 首先,我们需要理解PDF到文本转换的基本原理。PDF文件结构复杂,包含了大量的元数据和布局信息。对于非扫描版...

    读取PDF有关的DLL文件

    2. **itextsharp.dll**:这是一个开源的PDF库,用于读取、创建、修改和解析PDF文档。iTextSharp是.NET版本的iText库,它提供了丰富的API来处理PDF文档,包括添加文本、图像、表单字段,以及对PDF进行签名和加密。你...

    C#生成PDF 读取PDF文本内容 获取PDF内图片

    在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序,包括与PDF文档相关的操作。本篇文章将详细探讨如何使用C#来生成PDF、读取PDF文本内容以及获取PDF内的图片。 首先,生成PDF是许多业务场景中的常见...

Global site tag (gtag.js) - Google Analytics