本教程将展示如何在Java应用程序中使用LEADTOOLS SDK快速有效地减小PDF文件的大小,同时尽可能保留原始文件的质量。
概述 | |
---|---|
总结 | 本教程介绍如何在Java应用程序中有效地减小PDF文件的大小。 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(2kb) |
平台 | Java应用程序 |
IDE | Eclipse |
开发许可 | 下载LEADTOOLS |
用另一种语言试试 |
|
在开始之前优化PDF文件的存储- Java本教程中,通过回顾添加引用和设置License教程。
中创建的项目的副本开始添加引用和设置License教程。如果您没有该项目,请按照该教程中的步骤创建它。
所需要的参考资料取决于项目的目的。引用可以由本地添加. jar
档案位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Java
.
本项目需要参考资料如下:
leadtools.codecs.jar
leadtools.jar
leadtools.pdf.jar
有关应用程序需要哪些JAR文件的完整列表,请参阅Java应用程序中包含的文件.
许可证解锁项目所需的特性。它必须在调用任何工具箱函数之前设置。有关包括针对不同平台的教程的详细信息,请参阅设置运行时License.
有两种类型的运行时许可证:
请注意
中更详细地介绍了添加LEADTOOLS引用和设置许可添加引用和设置License教程。
随着项目的创建、引用的添加和许可的设置,编码就可以开始了。
在Package Explorer,打开_Main.java
类的以下语句进口
顶部的块。
进口java.io.IOException;
进口java.nio.file。*;
进口leadtools。*;
进口leadtools.codecs。*;
进口leadtools.pdf。*;
控件中添加一个新方法_Main
类命名OptimizeFiles(字符串_pdfFileDir)
.方法中调用此方法run ()
方法,下面调用SetLicense ()
.字符串传递给OptimizeFiles ()
方法将是指向您希望优化的PDF文件的目录。为了本教程的目的,将使用以下目录:C: \ LEADTOOLS22 \ \图片资源
将下面的代码添加到新方法中以创建PDFOptimizerOptions
对象,并将属性设置为优化给定目录中的pdf。
无效OptimizeFiles(String _pdfFileDir) {
RasterCodecs _codecs =新RasterCodecs ();
//设置PDF实用程序dll的路径
.setInitialPath .getPdf _codecs.getOptions () () (“C: \ \ LEADTOOLS22 \ \ Bin \ \ CDLL \ \ x64”);
文件pdfFileDir =新文件(_pdfFileDir);
FilenameFilter pdfFilter =新FilenameFilter () {
公共布尔accept(文件目录,字符串名称){
返回name.toLowerCase () .endsWith (. pdf”);
}
};
File[] _pdfFiles = pdfFileDir.listFiles(pdfFilter);
文件_destDir =新文件(pdfFileDir,“OptimizedPDFs”);
如果(! _destDir.exists ())
_destDir.mkdir ();
myOptimizerOptions =新PDFOptimizerOptions ();
myOptimizerOptions.setAutoOptimizerMode (PDFAutoOptimizerMode.BEST_SIZE);
myOptimizerOptions.setColorImageDownsamplingMode (PDFDownsamplingMode.AVERAGE);
myOptimizerOptions.setGrayImageDownsamplingMode (PDFDownsamplingMode.BICUBIC);
myOptimizerOptions.setMonoImageDownsamplingMode (PDFDownsamplingMode.BICUBIC);
myOptimizerOptions.setColorImageDownsampleFactor (2.0);
myOptimizerOptions.setGrayImageDownsampleFactor (2.0);
myOptimizerOptions.setMonoImageDownsampleFactor (2.0);
myOptimizerOptions.setColorImageDPI (150);
myOptimizerOptions.setGrayImageDPI (150);
myOptimizerOptions.setMonoImageDPI (150);
myOptimizerOptions.setColorImageCompression (RasterImageFormat.JPEG);
myOptimizerOptions.setGrayImageCompression (RasterImageFormat.RAS_PDF_LZW);
myOptimizerOptions.setMonoImageCompression (RasterImageFormat.JBIG);
myOptimizerOptions.setEmbedAllFonts (假);
myOptimizerOptions.setSubsetFonts (真正的);
为(File _pdfFile: _pdfFiles)
{
//获取没有扩展名的文件名
字符串_pdfFilename = _pdfFile.getName();
intpos = _pdfFile.getName().lastIndexOf(“。”);
如果(pos > 0 && pos < (_pdfFilename.length() - 1))
_pdfFilename = _pdfFilename。substring (0, pos);
文件destFile =新文件(_destDir, _pdfFilename + .“_OPTIMIZED.pdf”);
CodecsImageInfo _info = _codecs.getInformation(_pdfFile.toString(),真正的);
长_beforeBytes = _info.getSizeDisk();
System.out.println (“大小”+ _pdfFile.toString() +”:“+ _beforeBytes);
PDFFile _pdf =新PDFFile (_pdfFile.toString ());
_pdf.setOptimizerOptions (myOptimizerOptions);
_pdf.optimize (destFile.toString ());
System.out.println ("PDF已优化并保存至"+ destFile.toString ());
CodecsImageInfo _afterInfo = _codecs.getInformation(destFile.toString(),真正的);
长_afterBytes = _afterInfo.getSizeDisk();
System.out.println (“优化尺寸”+ _pdfFile.toString() +”:“+ _afterBytes);
}
_codecs.dispose ();
}
请注意
AutoOptimizerMode属性设置了一个枚举值,用来指示如何优化PDF文件(BEST_QUALITY, BEST_SIZE, AVERAGE_SIZE等)。
按下运行项目Ctrl + F11,或选择执行命令->执行命令.
如果正确地执行了这些步骤,应用程序将抓取给定目录中的所有PDF文件,并基于PDFOptimizerOptions
,并将PDF文件导出到创建的目录中。
本教程展示了如何添加必要的引用来优化给定目录中的每个PDF文件以供存储。此外,我们还介绍了如何使用PDFFile
而且PDFOptimizerOptions
类。