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