2009-12-08 50 views
1

在我的iPhone應用程序中,我有幾個數據項。我想使用這些數據項目生成一個PDF文件並在電子郵件中附加PDF文件。我知道,我需要使用Quartz 2D來繪製PDF文件。 有沒有關於繪製PDF的示例代碼或建議?使用數據的PDF生成

+1

這[蘋果直營店(http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html#//apple_ref/doc/uid/TP30001066-CH214-TPXREF101 )有一個你想要的代碼示例。 – TechZen 2009-12-08 04:47:37

回答

3

下面就是我用來生成包含一些石英圖形PDF格式表示的NSData對象:

NSMutableData *pdfData = [[NSMutableData alloc] init]; 
CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData((CFMutableDataRef)pdfData); 

const CGRect mediaBox = CGRectMake(0.0f, 0.0f, self.bounds.size.width, self.bounds.size.height); 
CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, &mediaBox, NULL); 

UIGraphicsPushContext(pdfContext); 

CGContextBeginPage(pdfContext, &mediaBox); 

// Your Quartz drawing code goes here 

CGContextEndPage(pdfContext); 
CGPDFContextClose(pdfContext); 

UIGraphicsPopContext(); 

CGContextRelease(pdfContext); 
CGDataConsumerRelease(dataConsumer); 

然後可以此PDF數據保存到磁盤或將其添加爲附件您電子郵件消息,記住完成後發佈。

+0

謝謝! CGContextEndPage,解決了我的錯誤! – Borzh 2015-09-25 12:38:04

1

這裏的CGPDF功能良好的(工作)例如:http://www.olivetoast.com/blog/hamish/simple_uiscrollview_catiledlayer_example.ot

它使用CATiledLayer + UIScrollView的,這可能不適合各種各樣的閱讀器,但它仍然顯示你如何加載和繪製沒有UIWebView的PDF文檔(嚴重限制你的能力)。

將圖層類型更改回圖層,使用CGPDFDocumentGetNumberOfPages添加頁面處理,然後添加CGPDFDocumentGetPage,並且您擁有相當不錯的閱讀器。

我不知道如何執行註釋,我懷疑你需要自己的數據結構在文檔的頂部。