【问题标题】:Reduce pdf size in .Net在 .Net 中减小 pdf 大小
【发布时间】:2017-07-20 13:59:16
【问题描述】:

我有一个大小为 230KB 的 pdf 模板。在我的多个用户的WebAPI 中,复制该模板将数据推送到它,并使用iTextsharp 库进行合并。对于 1500 个用户,总文件大小达到 320 MB。

我尝试使用BitMiracle,它将文件大小减少到 160 MB。但它仍然是一个大文件。

我使用了acrobat ProSave as Other 选项Reduced Size PDF,它将文件大小减少到25 MB。

我想在我的 WebAPI 中使用 C# 将文件大小减小到 25MB,稍后将托管在服务器上。

由于用户不应该编辑该PDF,他只会将其存储为记录。我可以生成一个 post 脚本文件,然后使用 acrobat distiller 减小大小吗?如果可以,我该怎么做?

我正在使用ghostscript.Net。写了这个方法,它没有抛出任何错误。但是我找不到生成的后记文件的路径

    public void convertToPs(string file)
    {
        try
        {
            Process printProcess = new Process();

            printProcess.StartInfo.FileName = file;
            printProcess.StartInfo.Verb = "printto";
            printProcess.StartInfo.Arguments = "\"Ghostscript PDF\"";
            printProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            printProcess.StartInfo.CreateNoWindow = true;
            printProcess.Start();

            // Wait until the PostScript file is created
            try
            {
                printProcess.WaitForExit();
            }
            catch (InvalidOperationException) { }

            printProcess.Dispose();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

请帮忙

【问题讨论】:

  • 所以你有 1500 个用户都在写一个 PDF? - 一种解决方案是不这样做。 (即仅按需生成)
  • 实际上是WebAPI代码写入PDF。因此生成了 1500 个副本,并合并为单个 PDF 作为输出
  • 什么样的数据被推送到 pdf 中?
  • 因为它是一个模板,使用键值对、整数和字符串被推送到 PDF
  • 我认为没有任何代码很难帮助你。请添加您的代码和您尝试过的内容。

标签: c# pdf asp.net-web-api postscript acrobat-sdk


【解决方案1】:

模板是否嵌入了字体?可能合并不会结合这些字体。如果您不需要嵌入式字体,您可以删除它们。 Adobe 在组合嵌入字体方面做得很好。

如果你愿意,你可以给我发这么大的 pdf 文件,这样我就可以理解,为什么这个文件会变得这么大。我是 PDF 库的开发人员,获得最小的 PDF 是我正在研究的一个有趣的用例。

【讨论】:

    猜你喜欢
    • 2017-07-04
    • 2020-03-18
    • 2016-02-20
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多