【问题标题】:No Background when Rendering an UIView to a PDF将 UIView 渲染为 PDF 时没有背景
【发布时间】:2014-07-22 20:17:16
【问题描述】:

在我的 iPad 应用程序中,我使用以下方法将 UIView 呈现为 PDF。

+ (NSData*)createPDFfromUIView:(UIView*)aView
{
    NSMutableData *pdfData = [NSMutableData data];

    UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
    UIGraphicsBeginPDFPage();
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();

    [aView.layer renderInContext:pdfContext];

    UIGraphicsEndPDFContext();

    return pdfData;
}

这很好用。我的问题是一切都正确渲染(所有子视图),但视图背景总是白色的。如果我希望视图的背景也能正确呈现,我需要进行哪些更改?

【问题讨论】:

  • 也许将 aView.layer.backgroundColor 设置为某个值?不确定,我从来没有这样做过
  • 背景是颜色吗?还是图片(JPEG、PNG)?
  • 进入该方法时背景已经设置为UIColor了。
  • 以上工作正常。要么没有 bg,要么你需要添加一个最小的示例 xcode 项目
  • 基本渲染 PDF 存在问题。 Preview 和 Acrobat 可以很好地呈现 PDF,但不同的应用程序将背景显示为白色,或者在 Basecamp 的情况下显示为洋红色。你找到解决办法了吗?

标签: ios objective-c pdf uiview render


【解决方案1】:

如果视图有一个有效的bg,它会被渲染成pdf:

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    //bg
    self.view.backgroundColor = [UIColor redColor];

    //make pdf
    NSData *pdf = [ViewController createPDFfromUIView:self.view];
    [pdf writeToFile:@"/Users/dominik/t.pdf" atomically:NO];

}

+ (NSData*)createPDFfromUIView:(UIView*)aView
{
        //question source code (see above)
}
@end

所以:设置背景颜色

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多