我正在使用drawpdf函数在ios应用程序中生成pdf,同时在nsobject类中调用drawtext函数时,它会根据我指定的框架和字符串清晰地绘制文本。
我的代码是
+(void)drawText:(NSString*)textToDraw inFrame:(CGRect)frameRect
{
CFStringRef stringRef = (__bridge CFStringRef)textToDraw;
// Prepare the text using a Core Text Framesetter
CFAttributedStringRef currentText = CFAttributedStringCreate(NULL, stringRef, NULL);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(currentText);
CGMutablePathRef framePath = CGPathCreateMutable();
CGPathAddRect(framePath, NULL, frameRect);
// Get the frame that will do the rendering.
CFRange currentRange = CFRangeMake(0, 0);
CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, currentRange, framePath, NULL);
CGPathRelease(framePath);
// Get the graphics context.
CGContextRef currentContext = UIGraphicsGetCurrentContext();
// Put the text matrix into a known state. This ensures
// that no old scaling factors are left in place.
CGContextSetTextMatrix(currentContext, CGAffineTransformIdentity);
// Core Text draws from the bottom-left corner up, so flip
// the current transform prior to drawing.
CGContextTranslateCTM(currentContext, 0, frameRect.origin.y*2);
CGContextScaleCTM(currentContext, 1.0, -1.0);
// Draw the frame.
CTFrameDraw(frameRef, currentContext);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CGContextTranslateCTM(currentContext, 0, (-1)*frameRect.origin.y*2);
CFRelease(frameRef);
CFRelease(stringRef);
CFRelease(framesetter);
}
但是我需要将文本fontsize设置得更大更大胆。
我用过
CGContextSelectFont(currentContext, "Helvetica", 20, kCGEncodingMacRoman);
和
CGContextSetFontSize ( currentContext, 20);
参考mr.texian在上述函数中提供的答案,但没有变化
我在uiwebview中显示生成的pdf。
我从网上获得了这个代码。我不知道在哪里编辑字体设置的代码。 任何帮助将不胜感激。
答案 0 :(得分:6)
请尝试CoreText,这是一个非常有用的基础类。以下是示例代码:
CTFontRef font = CTFontCreateWithName((CFStringRef)@"Arial", 16.0f, nil);
CFAttributedStringSetAttribute(textString,CFRangeMake(0, strLength-1), kCTFontAttributeName, font);
将其添加到CFAttributtedStringRef
指针。
这应该有用。
答案 1 :(得分:2)
我认为这些就是你要找的东西
void CGContextSelectFont (
CGContextRef c,
const char *name,
CGFloat size,
CGTextEncoding textEncoding
);
和
void CGContextSetFontSize (
CGContextRef c,
CGFloat size
);
像...一样的东西。
CGContextSelectFont(currentContext, "Helvetica", 20, kCGEncodingMacRoman);
或
CGContextSetFontSize ( currentContext, 20);
希望有所帮助,这里更多...... Quartz 2D Programming Guide - Text
答案 2 :(得分:2)
使用CTFont
创建CTFontCreateWithNameAndOptions
(请检查:CTFont Reference)
创建一个可变的属性字符串(CFMutableAttributedString Reference) 您可以编辑此可变字符串并进行所需的任何更改。在您的情况下,请设置它的字体。
使用此字符串创建CTFrameSetter并显示字体。
如果您想要彻底并有足够的时间,请阅读String programming Guide
如果您想要使用CFMutableAttributedString的快速代码示例,请在stackoverflow上搜索CFMutableAttributedString,大多数答案都会让您了解如何使用它。对于例如this question
答案 3 :(得分:1)
答案 4 :(得分:1)
CGContextSetFont
怎么样?
NSString *fontName = @"Helvetica";
CGFontRef fontRef = CGFontCreateWithFontName((__bridge CFStringRef)fontName);
CGContextSetFont(context, fontRef);
CGContextSetFontSize(context, 20);
别忘了发布它:
CGFontRelease(fontRef);
答案 5 :(得分:0)
经过大量搜索后,发现itdamslife的答案是正确的,但它不支持我的代码。
但是,我便宜地解决了它。
即,多次调用drawText:
函数以获得粗体字。
for(int i=0;i<5;i++)
{
[self drawtext];
}