我想知道我是否可以使用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
感谢您的帮助(布鲁诺)!
答案 0 :(得分:2)
简答:不。
答案很长:是的,但你必须自己做很多工作。
如果您阅读了third and fourth paragraphs here,那么您希望能够更好地了解"压缩"实际上意味着从PDF的角度来看。
Adobe 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%更改图像(这是我说的好事!)