Component Behavior When Rendered as PDF
Understanding how Visualforce
components behave when converted to PDF is essential to creating pages that render
well.
The Visualforce PDF rendering service
renders static HTML and basic CSS that is explicitly provided by the page. As a rule, don’t use
components that:
- Rely on JavaScript to perform an action
- Depend on Salesforce style sheets
- Use assets such as style sheets or graphics that aren’t available in the page itself or in a static resource
Components That Are Safe When Rendering as PDF
- <apex:composition> (as long as the page contains PDF-safe components)
- <apex:dataList>
- <apex:define>
- <apex:facet>
- <apex:include> (as long as the page contains PDF-safe components)
- <apex:insert>
- <apex:image>
- <apex:outputLabel>
- <apex:outputLink>
- <apex:outputPanel>
- <apex:outputText>
- <apex:page>
- <apex:panelGrid>
- <apex:panelGroup>
- <apex:param>
- <apex:repeat>
- <apex:stylesheet> (as long as the URL isn’t directly referencing Salesforce style sheets)
- <apex:variable>
Components to Use with Caution When Rendering as PDF
- <apex:attribute>
- <apex:column>
- <apex:component>
- <apex:componentBody>
- <apex:dataTable>
Components That Are Unsafe to Use When Rendering as PDF
- <apex:actionFunction>
- <apex:actionPoller>
- <apex:actionRegion>
- <apex:actionStatus>
- <apex:actionSupport>
- <apex:commandButton>
- <apex:commandLink>
- <apex:detail>
- <apex:enhancedList>
- <apex:flash>
- <apex:form>
- <apex:iframe>
- <apex:includeScript>
- <apex:inputCheckbox>
- <apex:inputField>
- <apex:inputFile>
- <apex:inputHidden>
- <apex:inputSecret>
- <apex:inputText>
- <apex:inputTextarea>
- <apex:listViews>
- <apex:message>
- <apex:messages>
- <apex:outputField>
- <apex:pageBlock>
- <apex:pageBlockButtons>
- <apex:pageBlockSection>
- <apex:pageBlockSectionItem>
- <apex:pageBlockTable>
- <apex:pageMessage>
- <apex:pageMessages>
- <apex:panelBar>
- <apex:panelBarItem>
- <apex:relatedList>
- <apex:scontrol>
- <apex:sectionHeader>
- <apex:selectCheckboxes>
- <apex:selectList>
- <apex:selectOption>
- <apex:selectOptions>
- <apex:selectRadio>
- <apex:tab>
- <apex:tabPanel>
- <apex:toolbar>
- <apex:toolbarGroup>