C#/Java/C++开发PDF压缩功能,高保真压缩率达50%!

PDF压缩原理是什么呢,识别出PDF中各种布局层、图像和文字资源等,通过技术手段对布局进行优化、删除pdf中不需要的资源。

// c#代码using (Optimizer optimizer = new Optimizer()){    // Choose the optimization profile for archiving    optimizer.Profile = PDFOptimizationProfile.eOptimizationProfileArchive;    // Open input file    if (!optimizer.Open(inputPath, ""))        throw new Exception(String.Format("Input file {0} cannot be opened. " +            "{1} (ErrorCode: 0x{2:x}).", inputPath, optimizer.ErrorMessage, optimizer.ErrorCode));    // Save output file    if (!optimizer.SaveAs(outputPath, "", "", PDFPermission.ePermNoEncryption))        throw new Exception(String.Format("Output file {0} cannot be created. " +            "{1} (ErrorCode: 0x{2:x}).", outputPath, optimizer.ErrorMessage, optimizer.ErrorCode));    // Close input file    if (!optimizer.Close())        throw new Exception(String.Format("Input file {0} cannot be closed. " +            "{1} (ErrorCode: 0x{2:x}).", inputPath, optimizer.ErrorMessage, optimizer.ErrorCode));}
// Java代码optimizer = new PdfOptimize();// Choose the optimization profile for archivingoptimizer.setProfile(PdfOptimize.OPTIMIZATIONPROFILE.eOptimizationProfileArchive);// Open input fileif (!optimizer.open(inputPath, ""))    throw new IOException(String.format("Input file %s cannot be opened. %s (ErrorCode: 0x%08x).",        inputPath, optimizer.getErrorMessage(), optimizer.getErrorCode()));// Save output fileif (!optimizer.saveAs(outputPath, "", "", NativeLibrary.PERMISSION.ePermNoEncryption))    throw new IOException(String.format("Output file %s cannot be created. %s (ErrorCode: 0x%08x).",        outputPath, optimizer.getErrorMessage(), optimizer.getErrorCode()));// Close input fileif (!optimizer.close())    throw new IOException(String.format("Input file %s cannot be closed. %s (ErrorCode: 0x%08x).",        inputPath, optimizer.getErrorMessage(), optimizer.getErrorCode()));
// C++代码pOptimizer = PdfOptimizeCreateObject();// Choose the optimization profile for archivingPdfOptimizeSetProfile(pOptimizer, eOptimizationProfileArchive);// Open input fileif (!PdfOptimizeOpen(pOptimizer, szInputPath, _T(""))){    _tprintf(_T("Input file %s cannot be opened. %s (ErrorCode: 0x%08x).n"), szInputPath,        PdfOptimizeGetErrorMessage(pOptimizer), PdfOptimizeGetErrorCode(pOptimizer));    iReturnValue = 1;    goto cleanup;}// Save output fileif (!PdfOptimizeSaveAs(pOptimizer, szOutputPath, _T(""), _T(""), ePermNoEncryption)){    _tprintf(_T("Output file %s cannot be created. %s (ErrorCode: 0x%08x).n"), szOutputPath,        PdfOptimizeGetErrorMessage(pOptimizer), PdfOptimizeGetErrorCode(pOptimizer));    iReturnValue = 1;    goto cleanup;}// Close input amd output filesif (!PdfOptimizeClose(pOptimizer)){    _tprintf(_T("Input file %s cannot be closed. %s (ErrorCode: 0x%08x).n"), szInputPath,        PdfOptimizeGetErrorMessage(pOptimizer), PdfOptimizeGetErrorCode(pOptimizer));    iReturnValue = 1;    goto cleanup;}

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月19日
下一篇 2021年11月19日

相关推荐

发表回复

登录后才能评论