从Sierra开始,可以使用pdf drawWithBox:toContext:
操作。但在以前的操作系统版本中,这不存在。当存在图形上下文时,前导drawWithBox:
在存在上下文的地方(例如在drawRect:
中)工作得很好。但是,如果你没有这样的背景,我就不会看到使用drawWithBox:
的方法(除了采用可能会出现的随机背景)。我试过这个:
_contextRef =
CGBitmapContextCreate(_cvMat.data, ...
...
if (v12) {
[page drawWithBox:kPDFDisplayBoxBleedBox toContext:cgContext];
} else {
[NSGraphicsContext setCurrentContext:(__bridge NSGraphicsContext * _Nullable)(cgContext)];
[page drawWithBox:kPDFDisplayBoxBleedBox];
}
但刚刚抛弃
- [__ NSCFType graphicsPort]:无法识别的选择器发送到实例0x7f8de1e219a0
这不是经常遇到(或追求)的错误信息。
答案 0 :(得分:0)
您遇到的问题是CGContextRef
和NSGraphicsContext
不是一回事。当您期待+[NSGraphicsContext setCurrent:]
实例时,您正在使用CGContextRef
致电NSGraphicsContext
。
好消息是,您可以轻松地从NSGraphicsContext
创建CGContext
:
CGContextRef cgContext;
NSGraphicsContext *newContext = [[NSGraphicsContext alloc] initWithCGContext:cgContext flipped:NO];
[NSGraphicsContext setCurrent: newContext];
看看是否可以将PDF绘制到您期望的位置。