【问题标题】:Compress PDF to Smaller Size(i.e 1MB to 300kb) in C#在 C# 中将 PDF 压缩到更小的尺寸(即 1MB 到 300kb)
【发布时间】:2016-09-29 08:22:29
【问题描述】:

如果 pdf 文件超过 5Mb,我想将 pdf 文件保存到数据库,然后数据库变得沉重或负担更多的文件。所以我想尽可能减少 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();

【问题讨论】:

  • 是什么让您认为可以进一步压缩 PDF?
  • 您说您有一个 1 MB 的示例文件,并且您希望将此文件压缩到 300 KB。为什么你期望这是可能的?其他软件是否对同一文件执行相同操作?你知道压缩是如何工作的吗?
  • 我是 stackoverflow 的新手,请给我建议如何找到答案。如何致电 Mr.Pied Piper 或 Mr.Jan Sloot
  • @Moumit 我现在已经多次询问 OP为什么他们认为他们可以将 1 MB 的 PDF 压缩成 300 KB。如果他们只能回答“这是我的要求”,那么 Stack Overflow 就不是他们寻求帮助的地方。你告诉他们压缩数据然后解压缩它更没有帮助。您无法进一步无损压缩压缩的 PDF。
  • @VarahalaBabu .. 我希望现在上面的转换可以帮助您.. 重新考虑需求...

标签: c# asp.net pdf compression ext.net


【解决方案1】:

lossless compression 的意义在于,您可以压缩数据的数量已经结束。当 sec 将文件视为一个容器并对其应用通用压缩算法时,您不会对文件进行太多压缩,因为默认情况下它们已经以最佳方式保存。

非常简化:PDF 文件通常只有在包含许多未使用(嵌入)的对象(例如字体和表单域以及未优化的图像)时才能显着缩小。您找到的任何优化器都会简单地删除未使用的对象,并通过将它们保存为每英寸更少的点数(“更小的分辨率”)、每像素更少的位数(“更小的位深度”)或两者兼而有之来缩小这些图像。

因此,通过将PdfStream.BEST_COMPRESSION 传递给 PdfStamper,您已经在尽您所能。您根本无法比 PdfStamper 更简单地显着压缩 PDF。

但是,从您的 cmets 和编辑看来,您似乎只是担心将来这会损害您的数据库(即使它旨在包含数据,并且包含大量数据)。但这种担忧还不够具体,我们无法帮助您解决。

因此,请参阅之前关于您是否真的应该这样存储数据的许多讨论:

还有很多很多其他的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    相关资源
    最近更新 更多