Tag: visualforceException

  • System.VisualforceException: Getting content from within triggers is currently not supported

    System.VisualforceException: Getting content from within triggers is currently not supported

    System.VisualforceException: Getting content from within triggers is currently not supported
    (Salesforce Visualforce Error Notification)
    —————————-

    Hi All,
    Recently I was working on a task in which we need to save a pdf page as an attachment when a new record(Contact) is inserted.

    I was doing it with Trigger and its handler using Pag reference Method getContentAsPdf(). I got an exception when I was saving a record of contact. This problem will be resolved if we use @future(callout=true) annotation before the method

    Sample Pdf page:

    <apex:page renderAs=”pdf”>
        <!–Begin Default Content REMOVE THIS–>
        <h1> Hello </h1>
        This is your pdf page
        <!–End Default Content REMOVE THIS–>
     </apex:page>

    ContactTrigger:

    trigger ContactTrigger on Contact(After Insert) { 
        Set <String> setOfContactIds = new Set <String>(); 
        for (Contact objCon: trigger.new) {
            setOfContactIds.add(objCon.id); 
        }
        if (setOfContactIds.size() > 0) {
            ContactTriggerHelper.generatePdf(setOfContactIds); 
        }
    }

    ContactTriggerHelper:

    public class ContactTriggerHelper { 
        @future(callout = true)
        public static void generatePdf(Set <String> setOfIds) {
            List <Attachment> listOfAttach = new List <Attachment>();
            for (String conId: setOfContactIds) {
                PageReference pdf = Page.ContactInPdf;
                Attachment attach = new Attachment();
                attach.ParentId = conId;
                attach.name = conId + '.pdf';
                attach.body = pdf.getContentAsPDF();
                listOfAttach.add(attach); 
            } 
            if (listOfAttach.size() > 0)
            { 
                insert listOfAttach;
            }
        }
    }

    Thanks