如何在iOS上使用CoreGraphics渲染的pdf上反转文本颜色



我正在使用一个开源的PDF查看库(VFR PDF阅读器https://github.com/vfr/Reader)。我正在尝试实现"夜间模式"或黑底白字。我可以将背景设置为我喜欢的任何颜色,但无法更改文本颜色。您可以在中查看可以修改背景颜色的位置https://github.com/vfr/Reader/blob/master/Sources/ReaderContentPage.m在"drawLayer"方法中。它只是简单地改变PDF呈现的矩形的颜色。

我的问题是:我能对"上下文"做些什么吗?这会导致pdf中的文本变色(在我的情况下,我想要白色文本)?有问题的行看起来像这样(558行):

CGContextDrawPDFPage(context, _PDFPageRef); // Render the PDF page into the context

以下是我解决夜视问题的方法:

1) 我在NSUserDefault 中跟踪用户偏好(夜间模式或白天模式)

2) 在中

- (void)drawLayer:(CATiledLayer *)layer inContext:(CGContextRef)context
{

a) 检索用户偏好

NSString *userViewMode = [[NSUserDefaults standardUserDefaults] objectForKey:@"DayOrNightSetting"];

b) 将CGContextRef的背景色设置为白色

 CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);

c) 将CGContextDrawPage(Context,_PDFPageRef)替换为:

if ([userViewMode isEqualToString:@"Night"]) {
        CGContextSetBlendMode(context, kCGBlendModeDestinationAtop);
        CGContextDrawPDFPage(context, _PDFPageRef);
        CGContextSetBlendMode(context, kCGBlendModeExclusion);
        CGContextDrawPDFPage(context, _PDFPageRef);
    }
    else
    {
       CGContextSetBlendMode(context,kCGBlendModeNormal);
    CGContextDrawPDFPage(context, _PDFPageRef);
    }

最新更新