In my iPhone application, I have several data items. I want to generate a PDF file using these data items and attach the PDF file in email. What I know, I need to use Quartz
Here is a good (working) example of the CGPDF functions: http://www.olivetoast.com/blog/hamish/simple_uiscrollview_catiledlayer_example.ot
It uses a CATiledLayer + UIScrollView, this may not be appropriate for a reader of sorts, but it still shows you how to load and draw a PDF doc without UIWebView (which severely restricts your abilities).
Change the layer type back to a layer, add in page handling using CGPDFDocumentGetNumberOfPages and then CGPDFDocumentGetPage and you have a pretty good reader.
I don't know how to perform annotations, I suspect you would need your own data structure on top of the document.