PDFBox1.6.0编译成.net能用的DLL,详细步骤!

来源:互联网 发布:炉石传说官方网站 mac 编辑:程序博客网 时间:2024/06/10 04:36

需要在C#中读取PDF文档,应用到了PDFBox,目前最新版的PDFBox是1.6.0,下面是如何利用PDFBox1.6.0版编译得到DLL文件的步骤:


首先下载ikvmbin-7.0、pdfbox-1.6、Ant 1.8.3地址如下:

http://sourceforge.net/projects/ikvm/files/

http://www.apache.org/dyn/closer.cgi/pdfbox/1.6.0/pdfbox-1.6.0-src.zip

http://ant.apache.org/bindownload.cgi


将下载的ikvmbin-7.0、pdfbox-1.6、ant-1.8.3解压到E:\\PDFBox目录下:



第一步:安装ant,步骤如下:

(1)设置环境变量:

(2)在PATH环境变量中添加E:\PDFBox\apache-ant-1.8.3\bin

(3)打开cmd,输入ant –version,如果出现如下提示:


在确保java没有安装问题的情况下,可以在Java\jdk1.6.0_25\lib目录下找到tools.jar,拷贝到jre6\lib目录下即可,在此运行ant-version,得到如下结果:

ant设置完毕。


第二步:学习ikvmbin

关于ikvmbin其说明如下:

IKVM.NET is a Java Virtual Machine (JVM) for the .NET and Mono runtimes.At a time when most people in the computer industry consider Java and .NET asmutually exclusive technologies, IKVM.NET stands in the unique position ofbringing them together.

IKVM.NET includes the following tools:

(1)ikvm - Java Virtual Machine

(2)ikvmc - Compiles Java Bytecode to CIL

(3)ikvmstub - Generates Java stub classes from .NET assemblies


这里我们要使用到的就是ikvmc。

修改E:\PDFBox\pdfbox-1.6.0\pdfbox下的build.xml找到如下语句:

<!--.NET properties -->    <property name="ikvm.dir" value="."/><property name="ikvmc" value="${ikvm.dir}/bin/ikvmc.exe"/>

修改为如下

<!--.NET properties -->    <property name="ikvm.dir" value="../../ikvm-7.0.4335.0"/><property name="ikvmc" value="${ikvm.dir}/bin/ikvmc.exe"/>
主要是修改了ikvm的路径,在这里可以知道主要是使用了其中的ikvmc程序


第三步:编译

到E:\PDFBox\pdfbox-1.6.0\pdfbox目录下,输入ant built.NET,开始创建.net版本的pdfbox,在创建过程中需要联网,如下:


编译完成之后,在E:\PDFBox\pdfbox-1.6.0\pdfbox\bin目录下可以找到如下文件:


编译成功,下面新建一个C#测试程序:

在E:\PDFBox。目录下新建一个WinForm项目,命名为PDFBoxTest,在窗体中新添加一个按钮和一个文本框,如下:

在PDFBoxTest项目下新建一个DLL文件夹,拷贝如下文件到DLL文件夹:

这些文件在ikvm-7.0.4335.0\bin、ikvm-7.0.4335.0\bin-x86、pdfbox-1.6.0\pdfbox\bin目录下都可以找到,然后在WinForm中添加对这些dll的引用,如下:

在form1中引入如下命名空间:

using org.apache.pdfbox.pdmodel;using org.apache.pdfbox.util;

在按钮单击事件中添加如下代码:

private void button1_Click(object sender, EventArgs e)        {            PDDocument doc = PDDocument.load("document1.pdf",true);            PDFTextStripper pdfStripper = new PDFTextStripper();            string result=pdfStripper.getText(doc);            textBox1.Text = result;            //textBox1.Update();        }

拷贝一个pdf文件到debug目录下,命名为document1.pdf运行可以得到如下结果:


有时候在调试中会发现错误,需要添加IKVM.OpenJDK.Security.dll


好像无法上传附件,大家可以在http://download.csdn.net/detail/leishangwen/4173036下载到我的例子