18

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.

29

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).

  • 3
    Just to add another note to this. You can say 'inline; filename=AccountReport.pdf' if you want chrome and other browsers that have built-in PDF support to open them instead of trying to save them. When you do this, you can still save them and it'll pre-populate the filename of 'AccountReport.pdf' – Patrick Connelly Jul 6 '18 at 17:38
3

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.