如何使用核心文本设置PDF的字体颜色和样式?

时间:2013-07-03 06:21:20

标签: iphone ios objective-c pdf core-text

如果我使用core text框架创建PDF,则不允许我设置颜色和字体样式。 “核心文本”框架有什么问题吗?

我使用下面的代码设置颜色:

CGContextRef    currentContext = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(currentContext, 1.0, 0.0, 0.0, 1.0);  //This is not working.

2 个答案:

答案 0 :(得分:3)

尝试以下代码,在此代码中,我使用 CTFontRef

更改了我的字体样式和大小
+(void)drawText:(NSString*)textToDraw inFrame:(CGRect)frameRect
{
    CFStringRef stringRef = ( CFStringRef)textToDraw;

    CGColorSpaceCreateWithName(stringRef);

    NSMutableAttributedString *string = [[NSMutableAttributedString alloc]
                                         initWithString:textToDraw];
    CTFontRef helveticaBold;
    helveticaBold = CTFontCreateWithName(CFSTR("Helvetica-Bold"), 24.0, NULL);
    [string addAttribute:(id)kCTFontAttributeName
                   value:(id)helveticaBold
                   range:NSMakeRange(0, [string length])];
    [string addAttribute:(id)kCTForegroundColorAttributeName
                   value:(id)[UIColor whiteColor].CGColor
                   range:NSMakeRange(0, [string length])];

    CTFramesetterRef framesetter =    CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string);

    CGMutablePathRef framePath = CGPathCreateMutable();

    CGPathAddRect(framePath, NULL, frameRect);
    CFRange currentRange = CFRangeMake(0, 0);
    CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, currentRange, framePath, NULL);
    CGPathRelease(framePath);

    CGContextRef    currentContext = UIGraphicsGetCurrentContext();

    CGContextSetTextMatrix(currentContext, CGAffineTransformIdentity);

    CGContextTranslateCTM(currentContext, 0, frameRect.origin.y*2);

    CGContextScaleCTM(currentContext, 1.0, -1.0);

    CTFrameDraw(frameRef, currentContext);

    CGContextScaleCTM(currentContext, 1.0, -1.0);

    CGContextTranslateCTM(currentContext, 0, (-1)*frameRect.origin.y*2);

    CFRelease(frameRef);
    CFRelease(string);
    CFRelease(framesetter);
}

您也可以关注此链接 Example

希望这对你有帮助,Happy Coding

答案 1 :(得分:0)

您可以像这样创建颜色对象:

UIColor *colour = [UIColor colorWithRed:0 green:1 blue:0 alpha:0];

填充颜色:

CGContextSetFillColorWithColor(ctx, colour.CGColor);

如果您不使用ARC,则需要适当保留和释放颜色。