我没有将CGPDFPageRef
转换为NSData
。我想将PDF剪切成页面。并希望将其视为webview。这是我的代码:
CGPDFPageRef page=CGPDFDocumentGetPage(pdf,1);
CGRect mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
// output
CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData(*outputData);
CGContextRef context = CGPDFContextCreate(consumer, &mediaBox, NULL);
// draw
CGContextBeginPage(context, &mediaBox);
CGContextDrawPDFPage(context, page);
CGContextEndPage(context);
// This line gives me an error:
NSData *passDat = (__bridge_transfer NSData *)outputData;
答案 0 :(得分:0)
要将CFData转换为NSData,您可以执行以下操作:
NSData *passDat = (__bridge NSData *)outputData;
确保定义outputData
而不是*
。
CFDataRef outputData;
CFData与其Cocoa Foundation对应的NSData是“免费桥接”。这意味着Core Foundation类型在函数或方法调用中可以与桥接的Foundation对象互换。
加载整个PDF
如果您打算将整个PDF加载到UIWebView中并在那里查看,您可以执行以下操作:
// create an url to the PDF
let url = NSURL(string: "file://some/path/my.pdf")
// you can optionally append #page[pageNumber] to the url string to make the UIWebView display a desired page;
// NSURL(string: "file://some/path/my.pdf#page45")
// create a request with the provided url
let urlRequest = NSURLRequest(URL: url)
// load the PDF file into the UIWebView
webView.loadRequest(urlRequest)