A4サイズの用紙のUIView For Drawing pdfのサイズを教えてください。
以下のサイズを使用していますが、ラベルなどの pdfView オブジェクト、描画用に提供するサイズの画像ではありません。
.xib を作成し、手動で UILabels、画像、および線を描画します。次に、タグ プロパティを使用して、描画用のフレームを提供しますが、.xib に従って異なる場所を描画します。.xib (0、0、792、 1122)。
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 792, 1122), nil);
+(void)drawLabels:(NSMutableArray*)arr isData:(BOOL)isdata
{
NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"PDFView" owner:nil options:nil];
UIView* mainView = [objects objectAtIndex:0];
if (isdata)
{
for (int i=1;i<=[arr count];i++)
{
UILabel *lbl=(UILabel*)[mainView viewWithTag:i];
[self drawText:[arr objectAtIndex:i-1] inFrame:lbl.frame isData:isdata];
}
}
}
//これが私の Draw メソッドです
+(void)drawText:(NSString*)textToDraw inFrame:(CGRect)frameRect isData:(BOOL)isdata
{
int length=[textToDraw length];
CFStringRef string = (__bridge CFStringRef) textToDraw;
CFMutableAttributedStringRef currentText = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
CTFontRef font = CTFontCreateWithName((CFStringRef)@"Helvetica Neue Bold", 12.0f, nil);
if (isdata)
{
font = CTFontCreateWithName((CFStringRef)@"Helvetica Neue ", 12.0f, nil);
}
CFAttributedStringReplaceString (currentText,CFRangeMake(0, 0), string);
CFAttributedStringSetAttribute(currentText,CFRangeMake(0, length),kCTFontAttributeName,font);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(currentText);
CGMutablePathRef framePath = CGPathCreateMutable();
CGPathAddRect(framePath, NULL, frameRect);
CFRange currentRange = CFRangeMake(0, 0);
CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, currentRange, framePath, NULL);
CGPathRelease(framePath);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(currentContext, CGAffineTransformIdentity);
CGContextTranslateCTM(currentContext, 0, frameRect.origin.y*2);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CTFrameDraw(frameRef, currentContext);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CGContextTranslateCTM(currentContext, 0, (-1)*frameRect.origin.y*2);
CFRelease(frameRef);
CFRelease(framesetter);
}
// 線画の場合、以下のコードを使用しています
for (int j=1001;j<=1003;j++)
{
UILabel *lbl=(UILabel*)[mainView viewWithTag:j];
CGPoint lblPoint=CGPointMake(lbl.frame.origin.x, lbl.frame.origin.y);
CGPoint lblPoint2=CGPointMake(lbl.frame.origin.x+lbl.frame.size.width, lbl.frame.origin.y);
[self drawLineFromPoint:lblPoint toPoint:lblPoint2];
}
+(void)drawLineFromPoint:(CGPoint)from toPoint:(CGPoint)to
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGFloat components[] = {0.2, 0.3, 0.2, 0.4};
CGColorRef color = CGColorCreate(colorspace, components);
CGContextSetStrokeColorWithColor(context, color);
CGContextMoveToPoint(context, from.x, from.y);
CGContextAddLineToPoint(context, to.x, to.y);
CGContextStrokePath(context);
CGColorSpaceRelease(colorspace);
CGColorRelease(color);
}
これが私の.xibです
これが描画後の私の.pdfファイルです