5

目前我正在处理我有很多 1024x768 图像的 pdf 文件的问题,并且正在尝试优化 pdf 的文件大小,但我认为目前唯一足够好的解决方案是使用 jpeg 压缩来压缩图像。问题是我没有找到任何使用 iOS API 的方法。我错过了什么,有办法吗?我欢迎就如何使用其他方式优化 pdf 提出建议(降低图像的分辨率对我来说不是一个好的解决方案)。

编辑:如果有人知道另一个用于在 iOS 上生成 pdf 的 API - 将不胜感激链接。

提前致谢。

4

3 回答 3

9

实际上你可以使用 UIImageJPEGRepresentation。但还有一步,然后使用 JPEG 数据提供程序来绘制图像:

NSData *jpegData = UIImageJPEGRepresentation(sourceImage, 0.75);
CGDataProviderRef dp = CGDataProviderCreateWithCFData((__bridge CFDataRef)jpegData);
CGImageRef cgImage = CGImageCreateWithJPEGDataProvider(dp, NULL, true, kCGRenderingIntentDefault);
[[UIImage imageWithCGImage:cgImage] drawInRect:drawRect];

在绘制到 PDF 上下文时,这对我很有效。0.75 的压缩质量将我的载有图像的 PDF 的大小减少了大约 75%,而且看起来还不错。

于 2013-02-12T20:16:34.680 回答
1

如果有人感兴趣,我通过使用免费的 pdf 库 - libHaru 找到了我的问题的解决方案。它为我提供了将 JPEG 压缩图像添加到生成的 pdf 文件所需的功能。

于 2012-06-01T16:00:51.430 回答
-1

如果您想压缩图像,可以使用UIImageJPEGRepresentation

NSData * UIImageJPEGRepresentation (
   UIImage *image,
   CGFloat compressionQuality
);

您可以使用 jpeg 转换/压缩 PNG 图像

NSData *someImageData = UIImageJPEGRepresentation(pngImage, 0.6); // quality 0.6 (60%) (from 0.0-1.0).
UIImage *newCompressedJPG = [UIImage imageWithData:someImageData];

但我认为这不会减少您的 PDF 大小。因为当您将 UIImage 放置到您的 pdf 时,RAW 图像会被放置(据我所知)。

更新 1: 它的可压缩性从 0.0 到 1.0 不等(感谢Leena

于 2012-04-17T08:32:45.947 回答