我的问题与这个问题类似,只是我想在 iOS 中进行,而不是使用 java 或命令行。
给定:我从我的包(或 Documents 目录或其他任何地方)读入了一个 pdf 文件。
- 它包含图像吗?
- 如果是这样,它们的分辨率是多少?
- 如果 > myMaxResolution,如何使用在 myMaxResolution 渲染的图像创建 PDF 视图?
例如:如果 pdf 是以 300dpi 扫描的一堆页面,我想以 72dpi 显示它们,我的目标是获得 17 倍的加速。
谢谢!
我假设您想定义一个目标分辨率以支持包含太大而无法加载到 iOS 设备内存中的图像的文档(根据显示 PDF 页面的要求)?
查看 Apple 示例代码项目Large Image Downsizing。您可以修改该示例以呈现 PDF 页面(而不是图像),同时受益于相同的增量下采样。您可以定义目标分辨率,并且永远不会尝试将整个源文档一次全部加载到内存中。相反,目标 PDF 呈现以增量方式“组装”,在您定义的目标分辨率下。无论源分辨率实际是什么,您都可以执行此操作。
增量图像解码仅适用于 iOS 中的 TIFF、JPEG、PNG。但是,不支持 BMP、GIF、隔行扫描图像。在您的上下文中,这仅意味着如果您的 PDF 包含后一种类型的图像,它们将被完整解码到内存中,因此希望这些图像相对较小并且您的 PDF 中的大图像是前一种格式。
如示例自述文件中所述,源 PDF 可以存在于应用程序包、照片卷或其他位置(例如下载的 OTA)中。
此外,我修改了示例以支持 PDF。你可以在这里下载。在我的测试中,目标 PDF 以适当的目标分辨率呈现,包括您所期望的任何文本、字形或矢量元素。