自动压缩Windows Server上的PDF文件

时间:2013-05-07 13:37:18

标签: .net iis pdf asp-classic windows-server-2003

我有一个用户PDF上传提交系统,但是当我们只需要用于网页大小查看时,用户通常会上传原本用于打印的非常大的PDF。 我需要在服务器上自动压缩它们。我们正在运行 Windows Server 2003 。现在,我们只是通过SoftArtisans.FileUp方法让用户上传PDF。

我的问题是,在用户上传PDF后,自动在服务器上执行此操作的最佳或最简单方法是什么?

2 个答案:

答案 0 :(得分:1)

为什么不试试这个网站。之前使用它并且工作正常:

http://www.neeviapdf.com/PDFcompress/?w=code

答案 1 :(得分:0)

Docotic.Pdf library可能对您有用。

如果我理解正确,您愿意减少上传的PDF文件中图像的大小/质量,并应用其他常规压缩选项。

以下是此类方案的示例代码。代码:

  • 枚举给定文件中的所有图像
  • 缩放这些图片
  • 删除未使用的对象和
  • 优化PDF for Fast Web View并将其保存到新文件

使用示例中的代码,您应该能够优化上传的文件。

public static void compressPdf(string path, string outputPath)
{
    using (PdfDocument doc = new PdfDocument(path))
    {
        foreach (PdfImage image in doc.Images)
        {
            // image that is used as mask or image with attached mask are
            // not good candidates for recompression
            // 
            // also, small images might be used as mask even though image.IsMask for them is false
            //
            if (!image.IsMask && image.Mask == null && image.Width >= 8 && image.Height >= 8)
            {
                if (image.ComponentCount == 1)
                {
                    // for black-and-white images fax compression gives better results
                    image.RecompressWithGroup4Fax();
                }
                else
                {
                    // scale image and recompress it with JPEG compression
                    // this will cause image to be smaller in terms of bytes
                    // please note that some of the image quality will be lost
                    image.Scale(0.5, PdfImageCompression.Jpeg, 65);

                    // or you can just recompress the image without scaling
                    //image.RecompressWithJpeg(65);

                    // or you can resize the image to specific size
                    //image.ResizeTo(640, 480, PdfImageCompression.Jpeg, 65);
                }
            }
        }

        doc.SaveOptions.RemoveUnusedObjects = true;

        // this option causes smaller files but 
        // such files can only be opened with Acrobat 6 (released in 2003) or newer
        doc.SaveOptions.UseObjectStreams = true;

        // this option will cause output file to be optimized for Fast Web View
        doc.SaveOptions.Linearize = true;

        doc.Save(outputPath);
    }
}

免责声明:我为图书馆的供应商Bit Miracle工作。