iphone - 如何在 iOS 中的 PDF 中绘制多个彩色文本?
<p><p>我正在做一个项目,我需要将一些 NSString 文本绘制到 PDF 中。我能够以单色绘制 PDF 中的文本。我想在 PDF 中实现搜索方法,通过它我可以搜索 PDF 中的特定字符串并用不同的颜色标记它。 </p>
<p>以下是我用来在 PDF 中绘制单色文本的代码。</p>
<pre><code>- (void) drawText
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(currentContext, 0.0, 0.0, 1.0, 1.0);
NSString *textToDraw = pdfTextView.text;
UIFont *font = ;
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];
}
</code></pre>
<p>是否也可以从 PDF 中检索文本(如果它只包含文本)?</p>
<p>请指教。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您需要绘制属性字符串而不是简单字符串。尝试这个。 </p>
<pre><code>CGContextSetTextMatrix(pdfContext, CGAffineTransformIdentity);
CGMutablePathRef path = CGPathCreateMutable();
CGRect bounds = CGRectMake(x, y, width, height);
CGPathAddRect(path, NULL, bounds);
NSMutableAttributedString * string = [ initWithString:@"firstsecondthird"];
range:NSMakeRange(0,5)];
range:NSMakeRange(5,6)];
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);
</code></pre>
<p>这是给你的方向,可能对你有帮助。我将属性字符串用于粗体和全部。希望这也适用于颜色。 </p>
<p>编码愉快。</p></p>
<p style="font-size: 20px;">关于iphone - 如何在 iOS 中的 PDF 中绘制多个彩色文本?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/15152427/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/15152427/
</a>
</p>
页:
[1]