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

我想知道我是否可以使用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 

谢谢你的帮助(布鲁诺)!

简答:不。

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

如果你在这里阅读第三和第四段,你将有希望从PDF的角度更好地理解“压缩”实际意味着什么。

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

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

(并且通过破坏性的不可逆,你仍然可能有原始文件,我只想清楚这不像ZIP那样真正的“压缩”。)

但是,如果你真的想这样做,你可以查看这样的代码 ,它显示了如何使用iText执行图像的提取和重新插入。 但是,更改图像是因为iText不会对您的数据进行破坏性更改(这是我说的好事!)