在VB6 处理pdf 和jpg文件

最近做的一个项目需用将pdf文件页面输出成jpg图片文件,再对这些输出的jpg页面进行裁剪操作。

因为VB6比较旧了,很多主流的插件没有vb6可用的api或者示例代码,网上找了很久,总结一下VB6可行的方案:

一、处理pdf文件

1.Apache PDFBox

PDFBox 是一个使用Java编写的开源的PDF文档处理库
可以在这里下载:
http://pdfbox.apache.org/

因为是使用Java编写的,所以使用前需要安装jre
程序支持命令行,在VB中具体调用方式是以shell()命令调用,例如:

shell ("java -jar pdfbox-app-2.0.4.jar PDFToImage -imageType jpg C:\1.pdf")

上面命令将一个pdf文件的所有页面输出成jpg图片,还有许多其他命令可以用,具体参考:
http://pdfbox.apache.org/2.0/commandline.html

PDFBox有一个较大的不足是处理速度较慢

2.Debenu Quick PDF Library

Debenu目前已经被国内的Foxit福晰收购了,是一个商业软件,使用需要付费,不过网上可以找到注册码。
下载后需要ActiveX的quickpdf.dll和quickpdf.tlb两个文件,使用前可以先用系统自带的Regsvr32注册quickpdf.dll,也可以不,如果在其他电脑上运行出错时则需要注册。

菜单栏-工程-引用,选择浏览,选中quickpdf.tlb后即在工程中引用了这个库了:
在VB6 处理pdf 和jpg文件_第1张图片

接下来,可以按F2查看这个库中可以调用的对象,完整的开发文档在这里:
http://www.debenu.com/products/development/debenu-pdf-library/help/developer-guide/

接下来是进入实际开发环节,由于是商业软件,首先需要输入注册信息:

Dim pb As New DebenuPDFLibraryAX1016.PDFLibrary
Dim RegStatus As Integer
RegStatus = pb.UnlockKey("j87ig3k84fb9eq9dy34z7u66y")
Print RegStatus

调用后如果返回RegStatus为1,则表明注册成功

将PDF页面转换成图片文件:

QP.LoadFromFile("sample.pdf", "")          '第一步将文件载入内存
iNumPages = QP.PageCount()          '获取pdf文件的页数
QP.RenderDocumentToFile(100, 1, iNumPages, 0, "image.bmp")  '转换

其他命令请参考开发文档

二、处理jpg图像文件

网上给出的解决方案有二:使用GDI+;调用Intel JPEG lib。这里介绍另一种开源的解决方案FreeImage,支持jpg、png、bmp等多种图像处理,可以在这里下载dll和开发文档:
http://freeimage.sourceforge.net/download.html

需要的文件是压缩包里的FreeImage.dll和modFreeImage.bas,将两个文件放到程序目录下。

新建一个工程,将modFreeImage.bas作为模块添加,这样就可以调用dll了。

对图片进行重采样:

Dim dib As Long
Dim dib2 As Long
dib = FreeImage_LoadU(FIF_JPEG, "jpgfile.jpg",0)    '将图片载入内存
dib2 = FreeImage_Rescale(dib, 1280, 800, FILTER_BOX)    '重采样
Call FreeImage_SaveU(FIF_JPEG, dib2, "tgfile.jpg",0)    '保存文件
FreeImage_Unload(dib)                   '释放内存

你可能感兴趣的:(vb6.0,pdf,图片,api)