首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不作为文档的iText7图像质量优化器

不作为文档的iText7图像质量优化器
EN

Stack Overflow用户
提问于 2021-08-09 12:49:21
回答 1查看 274关注 0票数 1

我正在使用iText7PDF Optimizer产品。这是非常简单的使用,但它并没有减少图像质量和我的PDF的大小。我使用的代码与他们的产品的Live现场演示中给出的代码完全相同,但是它并不像文档所描述的那样工作。我正在使用它的C#版本。我试着按代码中的方式切换image_scalar_level和compression_level,但没有产生任何影响。如果我上传同样的PDF文件来测试他们的演示,这是很好的。我做错了什么?如有任何帮助/指导方针,将不胜感激。

编辑:(添加我正在使用的代码,作为请求)

代码语言:javascript
运行
复制
        LicenseKey.LoadLicenseFile("license-key-path.xml");

        PdfOptimizer optimizer = new PdfOptimizer();

        /* Here we instantiate a FileReportBuilder which we can use as a log of the efficacy of
            our optimization.  Security level configuration possible.                          */

        FileReportPublisher publisher = new FileReportPublisher(new FileInfo("report.txt"));
        FileReportBuilder builder = new FileReportBuilder(SeverityLevel.INFO, publisher);
        optimizer.SetReportBuilder(builder);

        optimizer.AddOptimizationHandler(new FontDuplicationOptimizer());
        optimizer.AddOptimizationHandler(new FontSubsettingOptimizer());

        /* Scales down and compresses Image objects. In this case, we scale and compress a
             Tiff image by 50% */
        ImageQualityOptimizer tiff_optimizer = new ImageQualityOptimizer();
        tiff_optimizer.SetTiffProcessor(new BitmapCompressor(.05f, .05f));
        optimizer.AddOptimizationHandler(new ImageQualityOptimizer());
        optimizer.AddOptimizationHandler(new CompressionOptimizer());

        ColorSpaceConverter RGB_to_CMYK_Converter = new ColorSpaceConverter();
        CsConverterProperties csConversionProperties = new CsConverterProperties(ColorConversionMode.NORMAL);
        RGB_to_CMYK_Converter.SetCsConverter(new RgbToCmykCsConverter(csConversionProperties));
        optimizer.AddOptimizationHandler(RGB_to_CMYK_Converter);

        // Document is optimized according to defined handlers and written out to file.
        optimizer.Optimize(
                new FileInfo(@"D:\sample-input\ImageQuality_Optimization_Input.pdf"),
                new FileInfo(@"D:\sample-input\ImageQuality_Optimization_Input_OPT.pdf"));

以下是代码执行后report.txt的内容:

代码语言:javascript
运行
复制
[INFO] PdfOptimizer/FontDuplicationOptimizer: No font duplication found
[INFO] PdfOptimizer/FontSubsettingOptimizer: Glyphs in document were found successfully.
[INFO] PdfOptimizer/ColorSpaceConverter: Color space of the content stream with reference 5 0 R was converted.
[INFO] PdfOptimizer/ColorSpaceConverter: Color space of the content stream resources was converted.

我正在使用的pdf文件是来自他们的图像质量压缩机演示在他们的KB文章这里。指向知识库文章的链接是这里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-12 10:42:52

  1. 在您的示例中,您没有添加tiff_optimizer作为优化处理程序。在report.txt中,没有来自ImageQualityOptimizer的日志记录。这意味着,没有图像质量优化。但据我所知,如果添加tiff_optimizer,您将在report.txt错误PdfOptimizer/ImageQualityOptimizer中看到以下一行:无法使用TIFF类型的引用7 0 R优化图像
  2. PdfOptimizer不会抛出任何异常,如果在优化期间抛出任何异常,来自处理程序链的当前处理程序将完成,并写入日志,说明它无法执行指定的操作。
  3. 为了理解问题的来源,我调试了方法PdfOptimizer#Optimize,并发现异常是在ImageQualityOptimizer#optimizePdf中抛出的。 System.IO.FileNotFoundException:无法加载文件或程序集“System.Drawing.Common,Version=4.0.0.1,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51” ImageQualityOptimizer捕获它并写入日志。

总之,的解决方案是:

  1. 添加tiff_optimizer作为优化处理程序: optimizer.AddOptimizationHandler(tiff_optimizer);
  2. 添加System.Drawing.Common作为依赖项
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68712364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档