使用Cocoa的CoreGraphics渲染多种文档格式

时间:2010-07-13 19:15:08

标签: html cocoa ms-word core-graphics rtf

CoreGraphics提供了呈现PDF文档的可能性,这很棒。但似乎它可以支持其他类型,如Word文档,HTML,RTF等。

快速浏览Mac OS X Developer DVD上的doc2pdf.py示例让我这么认为:

  pageRect = CGRectMake(0, 0, 612, 792)
  c = CGPDFContextCreateWithFilename(output_file, pageRect)
  c.beginPage(pageRect)

  if fnmatch(ext,".txt") or fnmatch(ext,".?") or fnmatch(ext,".??"):
    tr = c.drawPlainTextInRect(text, pageRect, font_size)
  elif fnmatch(ext,".rtf"):
    tr = c.drawRTFTextInRect(text, pageRect, font_size)
  elif fnmatch(ext,".htm*") or fnmatch(ext,".php"):
    tr = c.drawHTMLTextInRect(text, pageRect, font_size)
  elif fnmatch(ext,".doc"):
    tr = c.drawDocFormatTextInRect(text, pageRect, font_size)
  elif fnmatch(ext,"*ml"):
    tr = c.drawWordMLFormatTextInRect(text, pageRect, font_size)
  else:
    return "Error: unknown type '%s' for '%s'"%(ext, input_file)

不幸的是,我不明白CoreGraphics的Python绑定是如何工作的(似乎绑定本身是二进制和专有的)。我在Apple开发人员文档中找不到这些方法的C / Obj-C等价物。并且谷歌没有发现很多关于这些功能的网页。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我不认为CoreGraphics会这样做。 NSAttributedString类的App Kit添加提供了从各种文档初始化属性字符串的方法,并在当前NSGraphicsContext中绘制。

答案 1 :(得分:0)

我发现它是如何工作的。

这里有一个很好的开源示例,只能通过对这些格式使用Cocoa框架支持来解析doc,docx,odt,rtf等文件: http://www.bean-osx.com/Bean.html