我有一个多页 pdf 文档存储在本地存储中。我想从该 pdf 文档中提取任何页面并将其转换为 NSData 以将其附加到“MFMailComposeViewController”。通过以下代码行,我可以轻松检索所需的页面......
CGPDFDocumentRef pdfDoc=CGPDFDocumentCreateWithURL(pdfURL);
CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdfDoc, pageNumber);
但我无法找到转换的方法pdfPage
into NSData
这样我就可以将其附在邮件中。
NOTE:要求附加 PDF 格式的页面,因此请勿建议将 PDF 转换为 PNG 或 JPEG。
CGPDF
主要用于从 PDF 绘图或转换为 PDF,而不是用于转换 PDF 数据。因此,如果你想提取一个页面,你必须draw它。使用例如:
// input
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)inputData);
CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(provider);
CGPDFPageRef page = CGPDFDocumentGetPage(document, pageIndex);
CGRect mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
// output
CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData((__bridge CFMutableDataRef)outputData);
CGContextRef context = CGPDFContextCreate(consumer, &mediaBox, NULL);
// draw
CGContextBeginPage(context, &mediaBox);
CGContextDrawPDFPage(context, page);
CGContextEndPage(context);
// cleanup
CGDataProviderRelease(provider);
CGPDFDocumentRelease(document);
CGDataConsumerRelease(consumer);
CGContextRelease(context);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)