Rendering VF page as pdf and sending pdf as an attachment from a list view

Thought i would share something which i needed to work on. I thank Jeff Douglas for his awesome post which helped me in this assignment.Requirement

    There is a custom visualforce page which is rendered as pdf. There is a button on contact detail page which when clicked would call this vf page. These things were present. In addition to viewing this pdf from contact detail there was also a necessity to email these PDFs that too in bulk from list views.
Solution
list button was created with source as VF page.
Controller is where all the code is
public  class emailcontact {
     public ApexPages.StandardSetController propcontroller{get;set;}
    public list props{get;set;}  
    public emailcontract(ApexPages.StandardSetController controller) {
    propcontroller =(ApexPages.StandardSetController)controller;   
    }
    public pagereference sendingemail(){
        props = propcontroller.getSelected();// Contains the list of record which is selected from the list  
         
        PageReference pdf = Page.VFpagetoberenderedaspdf;
        for(contact pr : props)
        {
            pdf.getParameters().put(‘id’,pr.Id);
            attachment attach = new attachment();
            Blob body;
            try {
                body = pdf.getContentAsPDF();
                }
            catch (VisualforceException e) {
                body = Blob.valueOf(‘Missing Text’);
                }
            // ********************* for attachment to the contactrecord ******************************   
            try{
            attach.Body = body;        
            attach.Name = ‘Contact’ +system.today+’.pdf’;
            attach.IsPrivate = false;
            attach.ParentId = pr.Id;
            att.add(attach);
            }
            catch(exception e)
            {
           
            }
            // ************************ for email creation************************************   
           
            Messaging.EmailFileAttachment attach2 = new Messaging.EmailFileAttachment();
            attach2.setContentType(‘application/pdf’);
            attach2.setFileName(‘Contact.pdf’);
            attach2.setInline(false);
            attach2.Body = body;
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            String[] toAddresses = new String[] {pr.Email};
            mail.setToAddresses(toAddresses);
            mail.setSubject(‘Offer for’ + pr.name);// alternatively use templates as well
            mail.setFileAttachments(new Messaging.EmailFileAttachment[] { attach2 });
            mail.setHtmlBody(‘Please find attached a cash offer for your listing at ‘);           
            em_sent.add(mail);          
        }
    }
    if(att!= null)
    insert att;
    if(em_sent != null)
    Messaging.sendEmail(em_sent);         
    pagereference pr  = new pagereference(‘/a0e/o’);//will redirect to contact tab
    return pr;
    }
}
Also you can add a piece of code to send an email to yourself to indicate the success or failure of the action or display it in the page
Limitations
Major limitation i faced is no of the records the code can process (Governor limits on callouts). It was limited to 10 after which time out error happened. I tried using batch as well as future calls. Both returned me empty PDFs. Waiting for Salesforce to remove these limitations in future.