用于在OS X中绘制pdf的命令行应用程序

时间:2012-05-25 21:05:33

标签: cocoa core-graphics

我正在尝试找出一个很好的方法来创建一个命令行应用程序(桌面上的OS X)来绘制和保存pdf。如果我有一个带有视图的GUI,那么我会使用NSBezierPath对象,最后做[myView dataWithPDFInsideRect:r]。

我一直在使用通过CGPDFContextCreateWithURL获得的CGContextRef,但它很笨重。像CGContextAddCurveToPoint这样简单的东西有两个控制点不能像我期望的那样呈现(它在中间看起来很奇怪)。像Scott Stevenson的(part II)这样复杂的东西似乎不可能。

我错过了一些简单的东西吗?有没有办法构建一个视图,并在没有窗口的情况下绘制它?一种做更好的核心图形的方法吗?

更新:为了清楚起见,main中的代码是:

int main(int argc, char * argv[]) {
    MyView *myView;
    NSRect f = NSMakeRect(0,0,300,300);
    myView = [[MyView alloc] initWithFrame:f];
    NSData *data = [myView dataWithPDFInsideRect:f];
    [data writeToFile:@"x.pdf" atomically:YES];
    return 0;
}

从终端:

clang prog.m -o prog -framework Cocoa -fobjc-gc-only
./prog

1 个答案:

答案 0 :(得分:2)

如果您创建一个命令行工具,该工具链接AppKit并在没有窗口的独立视图上使用dataWithPDFInsideRect,并从terminal.app手动运行它,这将按预期工作。如果您是通过ssh或其他类似启动作业登录的,则可能无效。