通过渲染从 UIView 生成 PDF 质量下降 iOS
我有一个名为TTT_WantsToBeRazorSharpView
. 这个视图什么都不做,但是用
NSString*txtPleaseHelp = NSLocalizedString(@"Hello, am I blurry again?",@"");
CGContextShowTextAtPoint(ctx, 10, 50, [txtPleaseHelp cStringUsingEncoding:NSMacOSRomanStringEncoding], [txtPleaseHelp length]);
现在视图被绘制了三次UIViewController
(一次在 中IB
)和两次在代码中使用这些行(比较下图):
TTT_WantsToBeRazorSharpView *customViewSharp = [[TTT_WantsToBeRazorSharpView alloc] initWithFrame:CGRectMake(10,250, 300, 80)];
[self.view addSubview:customViewSharp];
TTT_WantsToBeRazorSharpView *customViewBlurryButIKnowWhy = [[TTT_WantsToBeRazorSharpView alloc] initWithFrame:CGRectMake(361.5, 251.5, 301.5, 80.5)];
[self.view addSubview:customViewBlurryButIKnowWhy];
第一个代码绘制视图是锐利的,而第二个不是,但没关系,因为 rect 的逗号值(361.5、251.5、301.5、80.5)。
看这张图片:
但我现在的问题是,如果我将视图渲染成 pdf 文档,它就会变得模糊!不知道为什么,请看这里:
和 PDF 文件本身 Test.pdf https://raw.github.com/florianbachmann/GeneratePDFfromUIViewButDontWantToLooseQuality/master/Test.pdf
以及将视图呈现为 pdf 的行:
//this is blurry, but why? it can't be the comma coordinates
CGRect customFrame1 = CGRectMake(10,50, 300, 80);
TTT_WantsToBeRazorSharpView *customViewSharp = [[TTT_WantsToBeRazorSharpView alloc] initWithFrame:customFrame1];
CGContextSaveGState(context);
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, (int)customFrame1.origin.x, (int)customFrame1.origin.y);
[customViewSharp.layer renderInContext:context];
CGContextRestoreGState(context);
那么为什么renderInContext:context
文字模糊呢?
感谢您的所有提示和帮助,我什至为您的勇敢做了一个 GitHub 项目(附来源):https ://github.com/florianbachmann/GeneratePDFfromUIViewButDontWantToLooseQuality