【问题标题】:PDF to JPG Conversion in COCOACOCOA 中的 PDF 到 JPG 转换
【发布时间】:2010-11-20 21:10:31
【问题描述】:

在我的 cocoa 应用程序中,我需要将 pdf 的每一页保存为 jpg .. 我怎样才能继续使用 Objective C

【问题讨论】:

    标签: cocoa image pdf


    【解决方案1】:

    使用纯Objective-C(Cocoa和PDF Kit),迭代PDF文档的页面,并为每个页面创建一个大小与页面媒体框大小相同的NSImage,锁定焦点在它上面,告诉页面绘制,创建一个带有焦点视图(图像)的 NSBitmapImageRep,解除对图像的焦点,然后向位图图像代表询问 JPEG 数据并将该数据写入文件。 (这个解决方案很烂;不要使用它。)

    另一种方式是Core Graphics 和ImageIO。创建一个与文档的媒体框和颜色空间匹配的位图上下文,然后为每个页面,为 JPEG 文件创建一个图像目标,从文档中获取页面,在上下文中绘制页面,从上下文中创建一个 CGImage,使用CGContextClearRect 清除上下文,将图像添加到目的地,并最终确定目的地。

    【讨论】:

    • 感谢您的回复。但我没有使用任何 UI 来显示 PDF。我只想浏览 PDF 文件,它应该存储在任何对象中,然后它应该呈现每个页面。那么如何在我的应用程序中使用 PDF Kit。
    • 你会照我说的做。两种解决方案都不需要视图。 (NSImage 确实需要连接到窗口服务器,所以如果这是一个命令行工具,Core Graphics 解决方案是唯一的解决方案)。
    • 谢谢你。我能得到每一页,但与从 Acrobat Professional 导出创建的 jpg 文件相比,分辨率非常低。
    • NSPDFImageRep *img = [NSPDFImageRep imageRepWithContentsOfFile:path]; int count = [img pageCount]; for(int i = 0 ; i
    • 这是另一种方式,与我的建议不同。想想看,我的第一个建议可能有同样的问题,所以我推荐第二个,基于 Quartz 的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 2016-09-17
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多