gpt4 book ai didi

ios - 如何将 CGPDFDocument/CGPDFPage 附加到 MFMailComposeViewController

转载 作者:行者123 更新时间:2023-11-28 18:24:44 24 4
gpt4 key购买 nike

我有一个多页的 pdf 文档存储在本地存储中。我想从该 pdf 文档中提取任何页面并将其转换为 NSData 以将其附加到“MFMailComposeViewController”。使用以下代码行,我可以轻松地检索所需的页面...

CGPDFDocumentRef pdfDoc=CGPDFDocumentCreateWithURL(pdfURL);
CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdfDoc, pageNumber);

但我找不到将 pdfPage 转换为 NSData 以便我可以将其附加到邮件中的方法。

注意:要求附上 PDF 格式的页面,因此请不要建议将 PDF 转换为 PNG 或 JPEG。

最佳答案

CGPDF 主要用于从 PDF 绘图和向 PDF 绘图,而不是用于转换 PDF 数据。因此,如果要提取页面,则必须绘制。使用例如:

// 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);

关于ios - 如何将 CGPDFDocument/CGPDFPage 附加到 MFMailComposeViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12637508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com