将任何文档的页面转换为图像

3

通过在位图上下文(CGContextDrawPDFPage)中渲染每个pdf页面,可以将PDF页面转换为图像。

我们能否对其他类型的文档(iWork、MS Office等)执行相同操作?

我们可以使用UIDocumentInteractionController或QuickLook框架来显示所有这些文档的预览。但是二者都无法自定义或使我访问单个页面。

UIDocument也是如此。它可以将整个内容作为NSData或NSFileWrapper提供,但我不确定如何逐页呈现它(例如,在位图上下文中)。

是否有任何方法将其他文档页面转换为图像?

更新:

到目前为止,我没有取得任何进展。就连查看办公室/iWork文档也只能找到UIWebView、UIDocumentInterationController和QLPreview这些东西,更别说将它们转换为图像了。

是否有人有关于自定义文档交互控制器或快速查看预览控制器以逐页呈现文档的经验/想法?


我也想实现这个,但除了UIWebView之外找不到其他解决方案。 - harshalb
2个回答

0

我认为你可以在UIWebview中打开文档并截取视图的屏幕截图。


如何在网页视图中滚动以便对每个页面进行快照?此外,网页视图会添加一个花哨的背景,该背景会出现在上方和下方或两侧(取决于文档相对于网页视图框架的纵横比),但我不想在我的页面图像中显示它。我只想要页面本身。 - Swapnil Luktuke
是的,你遇到了那些困难。:( 你必须想办法找到框架来获取快照。 - Vignesh

0
我们能否对其他文档类型(iWork、MS Office等)执行相同的操作?
如果您知道如何为相关文档类型呈现内容,那么是可以的。QA1630 包含一些提示,包括您可以在 UIWebView 中显示的文档类型列表,尽管这种方式很难将此类文档分成页面。
UIDocument 也是如此。它可以将整个内容作为 NSData 或 NSFileWrapper 给出,但我不确定如何逐页呈现它(例如在位图上下文中)。
UIDocument 是一个抽象类 - 它不知道任何特定的文档类型。您必须子类化 UIDocument 来提供数据格式化的详细信息。因此,您将能够显示自己的文档类型,但除非您知道这些文档如何存储其数据,否则无法显示其他应用程序的文档。

@celeb:我的问题不是渲染。你提到的链接只是讨论使用 Web 视图来渲染这些文件格式。我已经可以通过快速预览做得更好了(我猜测也是使用 Web 视图)。 - Swapnil Luktuke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接