如何更改CGPDFPageRef的背景颜色,以及如何删除页面的阴影

DTs*_*DTs 0 pdf-generation uiwebview cgpdfdocument ios cgpdf

我试图用a UIWebView而不是a 来绘制内容UIView,因为我喜欢UIWebView通过捏合放大和缩小的能力.这是我的代码:

// setup environment
CGRect outputRect = myWebView.bounds;
CFMutableDataRef data = CFDataCreateMutable(NULL, 0); // init with default allocator and unlimited size
CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData(data);
CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, &outputRect, NULL);

CGPDFContextBeginPage(pdfContext, NULL);

// draw something
CGContextSetRGBFillColor (pdfContext, 1, 0, 0, 1);
CGContextFillRect (pdfContext, CGRectMake (0, 0, 200, 100 ));
CGContextSetRGBFillColor (pdfContext, 0, 0, 1, .5);
CGContextFillRect (pdfContext, CGRectMake (0, 0, 100, 200 ));

CGPDFContextEndPage(pdfContext);

// load drawing in webView
[myWebView loadData:(NSData *)data MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];

// cleanup
if(data != NULL) CFRelease(data); // always make sure to not pass NULL in CFRelease
CGDataConsumerRelease(dataConsumer);
CGContextRelease(pdfContext);
Run Code Online (Sandbox Code Playgroud)

UIWebView其他事情的背后,我希望可见,所以我UIWebView的背景透明如此:

myWebView.opaque = NO; //otherwise setting background color has no effect
myWebView.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

如果我不加载pdf,这可以正常工作.但是当pdf加载时,其页面有白色背景和阴影,如下面的屏幕截图所示.这搞砸了我的UI设计.如何摆脱阴影并使pdf页面透明?

谢谢

在此输入图像描述

ste*_*ete 7

UIWebView使用内部框架来显示pdf,一个不允许你改变背景的框架,至少不是一些疯狂的子类化hackery.你真的不应该搞乱UIWebView的内部.你真的,真的不应该在UIWebView中绘制自定义内容!它绝对不是为此而设计的.它的设计被视为一个黑盒子,显示网页内容,并(由上帝的怜悯)pdf.

使用UIScrollView并在那里绘制pdf.它不是很神奇,它的设计允许缩放.为了使缩放有效,您可能希望在用户缩放后使用CATiledLayer重新绘制pdf页面,否则文本将变得模糊.

免责声明:我花了大约一年的时间写PSPDFKit,这是一个可以做到这一点的图书馆.实际上很难让它变得更快并且也不会在旧设备上崩溃.

当我再次查看您的代码时,您是否需要pdf?为什么不直接绘制UIVc,这是UIScrollView的子视图?应该完美地满足您的需求.也将比编写/解析/渲染pdf仅用于绘制的所有方式快得多.