我正在尝试找出一种好方法来制作一个绘制和保存 pdf 的命令行应用程序(桌面上的 OS X)。如果我有一个带有 View 的 GUI,那么我将使用 NSBezierPath 对象,并在最后执行 [myView dataWithPDFInsideRect:r]。
我一直在使用通过 CGPDFContextCreateWithURL 获得的 CGContextRef 但它很笨重。像带有两个控制点的 CGContextAddCurveToPoint 这样简单的东西不会按照我的预期呈现(它在中间看起来很奇怪)。还有斯科特·史蒂文森 (Scott Stevenson) 的复杂的东西 (part II)看来不可能。
我错过了一些简单的事情吗?有没有办法构建一个 View 并在没有窗口的情况下绘制它?一种制作更精美的核心显卡的方法?
更新:需要明确的是,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
最佳答案
如果您制作一个链接 AppKit 的命令行工具,并在没有窗口的独立 View 上使用 dataWithPDFInsideRect,并从terminal.app 手动运行它,这将像您期望的那样工作。如果您通过 ssh 或其他方式(例如启 Action 业)登录,则这可能不起作用。
关于cocoa - 在 OS X 中绘制 pdf 的命令行应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10761358/