-
-
Save dhaniksahni/fd9b6114f50efd9dfa682f2540eab97e to your computer and use it in GitHub Desktop.
Sample Code to Generate PDF from Lightning components with in-memory data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class DataDisplayController { | |
public String PDFData {get; set;} | |
public DataDisplayController(){ | |
PDFData = ''; | |
} | |
public PageReference downloadPDF(){ | |
System.PageReference pageRef = new System.PageReference('/apex/PDFGenerator'); | |
//ensure pdf downloads and is assigned with defined name | |
pageRef.getHeaders().put('content-disposition', 'attachment; filename=TestPDF.pdf'); | |
return pageRef; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<aura:component > | |
<!-- attribute to accept Visualforce page's javascript method --> | |
<aura:attribute name="sendData" type="object"/> | |
<!-- Button component to invoke PDF download --> | |
<lightning:button label="Download Document" onclick="{!c.downloadDocument}" /> | |
</aura:component> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
({ | |
downloadDocument : function(component, event, helper){ | |
var sendDataProc = component.get("v.sendData"); | |
var dataToSend = { | |
"label" : "This is test" | |
}; //this is data you want to send for PDF generation | |
//invoke vf page js method | |
sendDataProc(dataToSend, function(){ | |
//handle callback | |
}); | |
} | |
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<apex:page controller="DataDisplayController" showHeader="false"> | |
<apex:includeLightning /> | |
<!-- Page code --> | |
<apex:form> | |
<apex:inputhidden id="hidData" value="{!PDFData}"/> | |
<apex:actionfunction name="jsGeneratePDF" action="{!downloadPDF}" /> | |
<div id="lightning" /> | |
<script> | |
function saveData(data, callback){ | |
var hidData = document.getElementById('{!$Component.hidData}'); | |
hidData.value = JSON.stringify(data); | |
//invoke PDF Generation | |
jsGeneratePDF(); | |
//invoke callback; | |
if(typeof callback == 'function') callback(); | |
} | |
function loadComponents(){ | |
console.log("Loading lightning component: DataProcessor"); | |
$Lightning.use("c:LightningPDFGeneratorDemoApp", function() { | |
$Lightning.createComponent("c:DataProcessor", | |
{ | |
sendData : saveData | |
}, | |
"lightning", | |
function(cmp) { | |
// do some stuff | |
}); | |
}); | |
} | |
loadComponents(); | |
</script> | |
</apex:form> | |
</apex:page> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<aura:application extends="ltng:outApp"> | |
<c:DataProcessor /> | |
</aura:application> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<apex:page controller="DataDisplayController" renderAs="pdf"> | |
{!PDFData} | |
</apex:page> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment