iTextSharp改变结果质量/压缩,如PDF24Creator

时间:2015-02-25 09:12:26

标签: c# pdf itextsharp

我想知道我是否可以使用iTextSharp和C#压缩/更改我输出的pdf文件的质量,就像我可以使用Adobe Acrobat Pro或PDF24Creator一样。

使用PDF24Creator我可以打开pdf,再次保存文件并设置" PDF的质量"低质量"低质量"我的文件大小从88,6MB减少到12.5MB,而质量仍然足够好。

我已经在使用

    writer = new PdfCopy(doc, fs);
    writer.SetPdfVersion(PdfCopy.PDF_VERSION_1_7);
    writer.CompressionLevel = PdfStream.BEST_COMPRESSION;
    writer.SetFullCompression();

将文件大小从大约92MB减少到88MB。

或者:我可以使用命令行参数或启动参数通过我的C#代码运行pdf24程序吗?这样的事情:

pdf24Creator.exe -save -Quality:low -inputfile -outputfile

感谢您的帮助(布鲁诺)!

1 个答案:

答案 0 :(得分:2)

简答:不。

答案很长:是的,但你必须自己做很多工作。

如果您阅读了third and fourth paragraphs here,那么您希望能够更好地了解"压缩"实际上意味着从PDF的角度来看。

Adob​​e Acrobat和PDF24 Creator等程序允许您通过销毁PDF中的数据来缩小文件大小。当您选择低质量设置时,这些程序最常见的更改之一是实际提取所有图像,降低其质量并替换PDF中的原始文件。因此,最初保存而没有任何压缩的JPEG可能会降低到60%的质量。而且要明确的是,60%是不可逆的,它不会压缩文件,它实际上是在破坏数据以节省空间。

另一种设置是降低图像的有效DPI。放置在2英寸宽的盒子中的500像素宽的图像实际上是250DPI。这些程序将提取图像,将图像缩小到96或72 DPI,这意味着500像素图像的宽度减少到192或144像素,并替换PDF中的原始文件。再一次,这是一种破坏性的不可逆变化。

(通过破坏性的不可逆,你仍然可能有原始文件,我只想清楚这不是真的"压缩"像ZIP一样。)

但是,如果您真的想这样做,可以查看code like this,其中显示了如何使用iText执行图像的提取和重新插入。但是,由于iText不会对您的数据进行破坏性更改,因此您可以100%更改图像(这是我说的好事!)