我正在寻找可以压缩 PDF 的库或命令行程序。
压缩速度和文件大小非常重要。
PDF 中充满了非常大的打印质量图像。
Adobe Acrobat 进行高质量、快速压缩,但不允许通过编程接口保存“缩小尺寸的 pdf”。
Ghostscript 的高质量压缩是否需要太长时间(分钟)。
我正在寻找可以压缩 PDF 的库或命令行程序。
压缩速度和文件大小非常重要。
PDF 中充满了非常大的打印质量图像。
Adobe Acrobat 进行高质量、快速压缩,但不允许通过编程接口保存“缩小尺寸的 pdf”。
Ghostscript 的高质量压缩是否需要太长时间(分钟)。
如果可以选择商业图书馆,您可以尝试Amyuni PDF Creator。有 .net 版本(C#/VB.Net 等)和 ActiveX 版本(用于 C++/Delphi/VB/PHP 等)。
您可以遍历每个页面的所有对象,选择那些是图像的对象,并减小它们的大小。你有几种可能性:
以下是使用 Amyuni PDF Creator .Net 的 C# 中第一个选项的代码外观:
//open a pdf document
document.Open("c:\\temp\\myfile.pdf","");
IacPage page1 = document.GetPage (1);
Amyuni.PDFCreator.IacAttribute attribute = page1.AttributeByName ("Objects");
// listobj is an array list of graphic objects
System.Collections.ArrayList listobj = (System.Collections.ArrayList) attribute.Value;
foreach ( object pdfObj in listobj )
{
if ((IacObjectType)pdfObj.AttributeByName("ObjectType").Value == IacObjectType.acObjectTypePicture)
{
if ((IacImageCompressionConstants)pdfObj.AttributeByName("Compression").Value == IacImageCompressionConstants.acCompressionJPegMedium)
pdfObj.AttributeByName("Compression").Value = IacImageCompressionConstants.acCompressionJPegLow;
if ((IacImageCompressionConstants)pdfObj.AttributeByName("Compression").Value == IacImageCompressionConstants.acCompressionJPegHigh)
pdfObj.AttributeByName("Compression").Value = IacImageCompressionConstants.acCompressionJPegMedium;
// (...)
}
}
通常的免责声明适用
您可能想为您的任务尝试Docotic.Pdf 库。
这是一个缩放所有宽度或高度大于或等于 256 的图像的代码。然后使用 JPEG 压缩对缩放的图像进行编码,质量设置为 65。
public static void RecompressToJpeg(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
if (!image.IsMask && image.Mask == null && (image.Width >= 256 || image.Height >= 256))
image.Scale(0.5, PdfImageCompression.Jpeg, 65);
}
doc.Save(outputPath);
}
}
您也可以使用RecompressWithJpeg方法之一(或其他方法之一)仅重新压缩图像而不更改其大小RecompressXXX
。
并且可以使用ResizeTo方法之一将图像调整为指定的宽度和高度。请注意,在后一种情况下,您需要考虑纵横比。
免责声明:我为图书馆的供应商工作。