ios - 使用 Apple 的 PDFKit 框架更改文本和背景颜色

标签 ios objective-c swift macos pdf

我想使用 Apple's PDFKit Framework更改显示的 PDF 文档的文本和背景颜色“夜间模式”(深色背景,浅色前景,just like in Adobe Reader)显示文档。

我知道 PDFPage class有一个drawWithBox:toContext:方法,可以在子类中覆盖以添加效果(如水印,如 this WWDC 2017 session 所示),但我不知道如何设置颜色属性。

有没有办法使用 PDFKit 库或来自 Apple 的任何其他低级 API (Quartz) 来做到这一点?

最佳答案

要在 pdf 中提供文本颜色,您可以使用,

-(CGRect)addText:(NSString*)text withFrame:(CGRect)frame font:(NSString*)fontName fontSize:(float)fontSize andColor:(UIColor*)color{
    const CGFloat *val = CGColorGetComponents(color.CGColor);

    CGContextRef    currentContext = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(currentContext, val[0], val[1], val[2], val[3]);
    UIFont *font =  [UIFont fontWithName:fontName size:fontSize];
    CGSize stringSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(pageSize.width - 2*20-2*20, pageSize.height - 2*20 - 2*20) lineBreakMode:NSLineBreakByWordWrapping];

    CGRect renderingRect = CGRectMake(frame.origin.x, frame.origin.y, textWidth, stringSize.height);

    [text drawInRect:renderingRect withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentLeft];

    frame = CGRectMake(frame.origin.x, frame.origin.y, textWidth, stringSize.height);

    return frame;
}

对于背景颜色,使用以下内容

CGContextRef currentContext = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(currentContext, [UIColor blueColor].CGColor );
    CGContextFillRect(currentContext, CGRectMake(0, 110.5, pageSize.width, pageSize.height));

关于ios - 使用 Apple 的 PDFKit 框架更改文本和背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44472810/

相关文章:

html - 如何在 iPhone 中播放 HTML 格式的音频?不起作用的示例 :(

ios - 查询 Parse 中可能为 nil 的值

ios - 从 Firebase 存储中删除表格 View 图像

objective-c - 子类 mac OS colorpickers 以添加按钮

iphone - 如何在 Enter 按键时关闭键盘

ios - MPMoviez PlayerViewController 只显示视频但不播放音频 iOS 8

ios - 如何在iOS应用程序中使用多任务处理?

ios - Xcode 10 Storyboard 极慢到无响应的地步

ios - 当我们使用Objective-C使用手指拖动时xib的垂直滑动

ios - Objective C block 变为 Nil