我正在寻找一种将高分辨率 PDF 文件从 ASP.NET 应用程序 (C#) 转换为低分辨率 PDF 文件的方法。用户将导入高分辨率 PDF,然后解决方案应该可以同时提供高分辨率 PDF 和低分辨率 PDF。我正在寻找一个 API 来做到这一点。我找到了很多 PDF api,但它们似乎都没有做我正在寻找的东西。
3 回答
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 的概念。这只是我所知道的。:-)
也许您可以只调整高分辨率版本 PDF 中的图像大小,这将为您提供更小的文件。
您可以使用Docotic.Pdf 库调整图像大小和/或重新压缩图像。有关更多详细信息,请查看我对类似问题的回答。
免责声明:我是 Docotic.Pdf 库的开发人员之一。
有许多可能的方法来解决这个问题,其中之一就是从 InDesign 导出两次(这将允许您制作所需的两个 PDF 版本)。如果这不可行(从 InDesign 导出可能需要一些时间),那么市场上肯定有可以执行您想做的事情的库。这里有很多方法:
1) 虽然这会让我被大多数 Adobe 员工枪毙,但您可以将 PDF 文件重新提炼成一个较小的文件。我不提倡这样做,我提到它是完整的。所涉及的风险将包括质量损失、伪影等(主要是因为 PostScript 不支持 PDF 支持的许多功能,并且通过重新蒸馏您会失去这些功能)。
2) 使用为此任务制作的应用程序或库。callas pdfToolbox 例如(警告,我隶属于这家公司!)能够获取 PDF 文件并对其进行更正。其中包括图像下采样、转换为 RGB、图像重新压缩(例如使用 JPEG-2000)、丢弃 PDF 中不必要的数据等等。鉴于该应用程序有一个命令行界面,它可以很容易地集成到 ac# 进程中。其他具有类似功能的应用程序将来自 Enfocus、Apago 等公司。
3) 使用低级 PDF 库(例如可以通过 DataLogics 从 Adobe 获得许可的 Adobe PDF 库)并自行实施必要的更改。更多的工作,但可能更灵活。
无论您选择哪种方法,都要知道您是从高质量的 PDF 文件开始的,并且您的流程应该尽可能多地保留该质量(当然取决于您为低分辨率 PDF 文件使用的应用程序)。确保您不会因失去适当的叠印、透明度等而陷入麻烦……