Ios 如果UILabel的背景色设置为默认值,则PDF上的UILabel将不透明
我这里有点奇怪 Im在Ios 如果UILabel的背景色设置为默认值,则PDF上的UILabel将不透明,ios,objective-c,pdf,uiwebview,Ios,Objective C,Pdf,Uiwebview,我这里有点奇怪 Im在UIWebView中呈现PDF。在9号之前一切都很好。从那时起,当在设备上预览和在桌面上查看时,生成的PDF文件很好,当打印时,或者从桌面导出为PDF(即使它已经是PDF)时,大多数ui标签都是不透明的框,带有打印出来的文本的颜色。这完全是随机的。即,打印输出上相邻的两个具有完全相同特征的ui标签将以不同方式显示。一个如预期,一个纯黑色或ui标签颜色。我已经广泛地寻找了关于为什么它选择黑掉一些框而不打开而没有的任何共同因素。将桌面上的PDF转换为png,可以防止出现问题。直
UIWebView
中呈现PDF
。在9号之前一切都很好。从那时起,当在设备上预览和在桌面上查看时,生成的PDF
文件很好,当打印时,或者从桌面导出为PDF
(即使它已经是PDF)时,大多数ui标签都是不透明的框,带有打印出来的文本的颜色。这完全是随机的。即,打印输出上相邻的两个具有完全相同特征的ui标签将以不同方式显示。一个如预期,一个纯黑色或ui标签
颜色。我已经广泛地寻找了关于为什么它选择黑掉一些框而不打开而没有的任何共同因素。将桌面上的PDF
转换为png
,可以防止出现问题。直接从AirPrint打印
文件按预期打印
手动将ui标签
背景颜色从默认设置为IB中的任何颜色可以解决此问题。或对标签进行子分类,并手动添加除透明外的任何颜色。检查和调整IB中数千个UILabel并不是理想的解决方案
渲染PDF
NSData *pdfData = [self createPdfWithPages:pagesArray];
[self performSelectorOnMainThread:@selector(pdfDone:) withObject:pdfData waitUntilDone:YES];
- (NSData *)createPdfWithPages:(NSArray *)pages {
NSMutableData *pdfData = [NSMutableData data];
component *firstPage = pages[0];
UIGraphicsBeginPDFContextToData(pdfData, firstPage.contentView.bounds, nil);
for (int i = 0; i < pages.count; i++) {
component *thisPage = pages[i];
UIGraphicsBeginPDFPageWithInfo(thisPage.contentView.bounds, nil);
CGContextRef pdfContext = UIGraphicsGetCurrentContext();
[thisPage.contentView.layer renderInContext:pdfContext];
}
UIGraphicsEndPDFContext();
return pdfData;
}
- (void)pdfDone:(NSData *)data {
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
self.pdfData = data;
[self.webView loadData:self.pdfData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:baseURL];
}
NSData*pdfData=[self-createPdfWithPages:pagesArray];
[self-performSelectorOnMainThread:@selector(pdfDone:)with object:pdfData waituntldone:YES];
-(NSData*)createPdfWithPages:(NSArray*)页面{
NSMutableData*pdfData=[NSMutableData];
组件*firstPage=pages[0];
UIGraphicsBeginPDFContextToData(pdfData,firstPage.contentView.bounds,nil);
对于(int i=0;i