【问题标题】:Convert High Resolution PDF to Low Resolution PDF file C#将高分辨率 PDF 转换为低分辨率 PDF 文件 C#
【发布时间】:2013-05-31 14:46:18
【问题描述】:

我正在寻找一种将高分辨率 PDF 文件从 ASP.NET 应用程序 (C#) 转换为低分辨率 PDF 文件的方法。 用户将导入高分辨率 PDF,然后解决方案应该可以同时提供高分辨率 PDF 和低分辨率 PDF。 我正在寻找一个 API 来做到这一点。我找到了很多 PDF api,但似乎没有一个能满足我的要求。

【问题讨论】:

  • HR_PDF 和 LR_PDF 是什么文件?在 Google 上快速搜索未找到任何内容。
  • 出于好奇,什么是 HR_PDF,什么是 LR_PDF?
  • 到目前为止你尝试过什么?你有没有用谷歌搜索任何可能对你有帮助的东西?那里有很多 C# PDF 库。
  • 定义“高分辨率”和“低分辨率”。您会考虑“低分辨率”PDF 文档的屏幕截图吗?
  • 高分辨率 pdf 文件是从一个 INDD 生成的。它是使用预设“最高文件大小”中的 bult 从 Indesign 生成的。因此,我想从生成的文件中生成分辨率较低的 PDF 文件。类似于内置 PDF 预设“最小文件大小”。

标签: c# asp.net pdf


【解决方案1】:

ABCpdf .NET 将为您完成这项工作。有多种功能可用于调整 PDF 文档中的图像大小、重新采样或重新压缩图像。但是,鉴于您的要求,您可能只想使用文档减小大小操作。

为此,您只需要以下形式的代码:

Doc doc = new Doc();
doc.Read(Server.MapPath("../mypics/sample.pdf"));
using (ReduceSizeOperation op = new ReduceSizeOperation(doc)) {
op.UnembedSimpleFonts = false; // though of course making these true...
op.UnembedComplexFonts = false; // ... would further reduce file size.
op.MonochromeImageDpi = 72;
op.GrayImageDpi = 72;
op.ColorImageDpi = 144;
op.Compact(true);
}
doc.Save(Server.MapPath("ReduceSizeOperation.pdf"));

我在 ABCpdf .NET 软件组件上工作,因此我的回复可能包含基于 ABCpdf 的概念。这只是我所知道的。 :-)

【讨论】:

    【解决方案2】:

    有许多可能的方法来解决这个问题,其中之一就是从 InDesign 导出两次(这将允许您制作两个所需的 PDF 版本)。如果这不可行(从 InDesign 导出可能需要一些时间),那么市场上肯定有可以执行您想做的事情的库。这里有很多方法:

    1) 虽然这会让我被大多数 Adob​​e 员工枪毙,但您可以将您的 PDF 文件重新提炼成一个较小的文件。我会提倡这样做,我提到它是完整的。所涉及的风险将包括质量损失、伪影等(主要是因为 PostScript 不支持 PDF 支持的许多功能,并且通过重新蒸馏您会失去这些功能)。

    2) 使用为此任务制作的应用程序或库。 callas pdfToolbox 例如(警告,我隶属于这家公司!)能够获取 PDF 文件并对其进行更正。其中包括图像下采样、转换为 RGB、图像重新压缩(例如使用 JPEG-2000)、丢弃 PDF 中不必要的数据等等。鉴于该应用程序具有命令行界面,因此可以轻松地将其集成到 c# 进程中。其他具有类似功能的应用程序来自 Enfocus、Apago 等公司。

    3) 使用低级 PDF 库(例如可以通过 DataLogics 从 Adob​​e 获得许可的 Adob​​e PDF 库)并自行实施必要的更改。更多的工作,但可能更灵活。

    无论您选择哪种方法,都要知道您是从高质量的 PDF 文件开始的,并且您的流程应该尽可能多地保留该质量(当然取决于您为低分辨率 PDF 文件使用的应用程序) )。确保您不会因为失去适当的叠印、透明度等而陷入麻烦......

    【讨论】:

    • 不幸的是,我无法从 Indesign 或类似程序创建低分辨率文件,我必须从代​​码中创建。不幸的是,我需要某种开源解决方案。
    • 那么剩下的就是选项 3) 并尝试找到一个您可以使用且不会破坏 PDF 文件的库。我对这些不是很熟悉,所以我必须通过。我可以建议您在问题中添加对开源/免费解决方案的要求吗?这可能有助于将进一步的答案引向正确的方向......
    【解决方案3】:

    也许您可以只调整高分辨率版本 PDF 中的图像大小,这样您的文件就会小得多。

    您可以使用Docotic.Pdf library 调整图像大小和/或重新压缩图像。更多详情请关注my answer to a similar question

    免责声明:我是 Docotic.Pdf 库的开发人员之一。

    【讨论】: