Рендеринг нескольких форматов документов с помощью CoreGraphics Cocoa - PullRequest
0 голосов
/ 13 июля 2010

CoreGraphics дает возможность рендерить PDF документы, это здорово.Но похоже, что он может поддерживать и другие типы, такие как документы Word, HTML, RTF и др.

Быстрый просмотр примера doc2pdf.py на DVD-диске Mac OS X для разработчиков заставляет меня думать так:

  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)

К сожалению, я не понимаю, как работает привязка Python в CoreGraphics (и кажется, что сама привязка является двоичной и проприетарной).Я не могу найти эквивалент C / Obj-C для этих методов в документации разработчиков Apple.И Google нашел не так много веб-страниц, рассказывающих об этих функциональных возможностях.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 17 июля 2010

Я нашел, как это работает.

Вот замечательный пример с открытым исходным кодом, здесь анализируются файлы doc, docx, odt, rtf и т. Д. Только с использованием поддержки инфраструктуры Какао для этих форматов: http://www.bean -osx.com / Bean.html

0 голосов
/ 14 июля 2010

Я не думаю, что CoreGraphics один делает это.Дополнение App Kit к классу NSAttributedString предоставляет способы инициализации атрибутной строки из различных типов документов и ее рисования в текущем NSGraphicsContext.

.
...