如果pdf文件超过5Mb,我想将pdf文件保存到数据库,然后数据库变为重载或负载更多no.of文件。所以我想减少Pdf文件的大小尽可能少... 。 我尝试了以下代码,但没有工作。请帮助将大PDF压缩到更小的尺寸。例如,如果PDF大小为2Mb,它将压缩到700Kb。我尝试了很多例子,但没有得到输出。所以请帮忙..
PdfReader reader = new PdfReader("D:/User Guid for Artificial Skin.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileStream("d:/pdfdoccompressed.pdf", FileMode.Create), PdfWriter.VERSION_1_5);
reader.SetPageContent(1, reader.GetPageContent(1));
int pageNum = reader.NumberOfPages;
for (int i = 1; i <= pageNum; i++)
{
reader.SetPageContent(i, reader.GetPageContent(i));
}
stamper.FormFlattening = true;
stamper.Writer.CompressionLevel = PdfStream.BEST_COMPRESSION;
stamper.SetFullCompression();
stamper.Close();
答案 0 :(得分:1)
lossless compression的要点是,您可以压缩数据的结果。当将文件视为容器并在其上应用通用压缩算法时,您不会对文件进行太多的缩减,因为默认情况下它们已经非常优化地保存。
非常简化:当PDF文件包含许多未使用(嵌入)的对象(如字体和表单字段)和未优化的图像时,通常只会显着缩小。您找到的任何优化器都会简单地丢弃未使用的对象,并通过将它们保存在每英寸较少的点数(&#34;较小的分辨率&#34;),每像素较少的位数(&#34;较小的bitdepth&#34; ) 或两者。
因此,通过将PdfStream.BEST_COMPRESSION
传递给PdfStamper,您已经尽力而为。你不能轻易地和显着地压缩PDF,这比PdfStamper已经做的要多得多。
但是,根据您的评论和编辑,您似乎害怕将来这会损害您的数据库(即使它的设计包含数据,以及很多数据)。但是,这种担忧并不足以让我们帮助你。
因此,请参阅以前许多关于您是否确实应该存储数据的讨论:
还有很多人。