如何将CGPDFPageRef转换为NSData xcode 7

时间:2016-05-10 06:30:06

标签: ios objective-c

我没有将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;

1 个答案:

答案 0 :(得分:0)

要将CFData转换为NSData,您可以执行以下操作:

NSData *passDat = (__bridge NSData *)outputData;

确保定义outputData而不是*

CFDataRef outputData;
  

CFData与其Cocoa Foundation对应的NSData是“免费桥接”。这意味着Core Foundation类型在函数或方法调用中可以与桥接的Foundation对象互换。

CFDataRef

加载整个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)