• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 如何在 iOS 中的 PDF 中绘制多个彩色文本?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:19:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在做一个项目,我需要将一些 NSString 文本绘制到 PDF 中。我能够以单色绘制 PDF 中的文本。我想在 PDF 中实现搜索方法,通过它我可以搜索 PDF 中的特定字符串并用不同的颜色标记它。

以下是我用来在 PDF 中绘制单色文本的代码。

- (void) drawText
{
    CGContextRef    currentContext = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(currentContext, 0.0, 0.0, 1.0, 1.0);


    NSString *textToDraw = pdfTextView.text;



    UIFont *font = [UIFont systemFontOfSize:14.0];



    CGSize stringSize = [textToDraw sizeWithFont:font
                               constrainedToSize:CGSizeMake(pageSize.width - 2*kBorderInset-2*kMarginInset, pageSize.height - 2*kBorderInset - 2*kMarginInset)
                                   lineBreakMode:UILineBreakModeWordWrap];

    CGRect renderingRect = CGRectMake(kBorderInset + kMarginInset, kBorderInset + kMarginInset + 50.0, pageSize.width - 2*kBorderInset - 2*kMarginInset, stringSize.height);


    [textToDraw drawInRect:renderingRect
                  withFont:font
             lineBreakMode:UILineBreakModeWordWrap
                 alignment:UITextAlignmentLeft];

}

是否也可以从 PDF 中检索文本(如果它只包含文本)?

请指教。



Best Answer-推荐答案


您需要绘制属性字符串而不是简单字符串。尝试这个。

CGContextSetTextMatrix(pdfContext, CGAffineTransformIdentity);
CGMutablePathRef path = CGPathCreateMutable(); 
CGRect bounds = CGRectMake(x,   y, width, height); 
CGPathAddRect(path, NULL, bounds);

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString"firstsecondthird"];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,5)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(5,6)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(11,5)];

CTFramesetterRef framesetter =  CTFramesetterCreateWithAttributedString(string);
// Create the frame and draw it into the graphics context 
CTFrameRef frame = CTFramesetterCreateFrame(framesetter,CFRangeMake(0, 0), path, NULL);
CFRelease(framesetter); 
CTFrameDraw(frame, pdfContext); 
CGContextTranslateCTM(pdfContext, 0, pageheight);
CGContextScaleCTM(pdfContext, 1.0, -1.0);   

这是给你的方向,可能对你有帮助。我将属性字符串用于粗体和全部。希望这也适用于颜色。

编码愉快。

关于iphone - 如何在 iOS 中的 PDF 中绘制多个彩色文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15152427/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap