Find your content:

Search form

You are here

How can I specify a file name for a Visualforce generated PDF

 
Share

What can I do on a Visualforce page that is a renderAs="pdf" that will result in the name of the file that shows up when the user clicks Save As... to not be the name of the Visualforce page.

The page is generated via a GET request coming from clicking a custom button.

Below is some code that is representative of the PDF.

 <apex:page standardController="Account" extensions="AccountPdf" 
         showHeader="false" 
         sidebar="false" 
         renderAs="PDF"
         title="AccountReport.pdf"
         contentType="application/pdf#AccountReport.pdf"
         <head>
             <title>AccountReport.pdf</title>
         </head>
         <apex:outputText value="Hello World"/>
 </apex:page>

The browser bar does not have the title value in it and when the user clicks Save As... the name of the file is the name of the Visualforce page (e.g., myPageName). If I remove the renderAs="pdf" the file downloads automatically with the correct file name due to the contentType, but the actual content type doesn't appear to be a PDF.


Attribution to: Peter Knolle

Possible Suggestion/Solution #1

This feature is not yet enabled on the <apex:page/> tag in Visualforce, however, you can set the filename in the <messaging:attachment/> tag in Visualforce email templates.


Attribution to: Scott VonSchilling

Possible Suggestion/Solution #2

You would need to set the Content-Disposition header.

In constructor of the Visualforce controller:

Apexpages.currentPage().getHeaders().put('content-disposition', 'attachment; filename=AccountReport.pdf');

If you want to make the file name dynamic you will need to refer to several RFCs on how to correctly encode the filename. E.g. if it contains spaces it will need to be quoted. If there are non-ASCII characters or it is longer than 78 characters it needs to be Hex encoded (RFC 2184).


Attribution to: Daniel Ballinger
This content is remixed from stackoverflow or stackexchange. Please visit https://salesforce.stackexchange.com/questions/4118

My Block Status

My Block Content