function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
abex1000abex1000 

PDFのファイル名

Visualforceページのrenderas属性でPDFを出力した場合のファイル名を指定する方法は何かないでしょうか?

 

http://community.salesforce.com/sforce/board/message?board.id=Visualforce&message.id=12485

このあたりを読むと、Visualforceページ名がそのまま使われてしまい、回避方法がないように読めるのですが。。 

Best Answer chosen by Admin (Salesforce Developers) 
HikeyHikey

正攻法では難しいかもしれません。

 

以下のようにしたらどうでしょうか?

 

 1.PDFファイル(PDFコンテキスト)をコントローラで取得

 2.PDFファイルをDocumentにインサート。ここでダウンロードさせたいファイル名をドキュメント名に指定。

 3.2番でインサートしたDocumentからファイルをダウンロードするURLにコントローラでリダイレクト

 

1番のPDFのコンテキストを取得サンプルコードは以下のURLをご参照ください。

http://www.salesforce.com/us/developer/docs/pages/Content/pages_email_sending_attachments.htm?SearchType=Stem&Highlight=pdf.getContent

 

3番のDocumentからのファイルダウンロードURLは以下のとおりです。2番でインサートしたIDを

指定します。

/servlet/servlet.FileDownload?file=<ID>

 

課題としては一時利用で利用したDocumentをいつ削除するか。。。 :smileysad:

 

 

All Answers

HikeyHikey

正攻法では難しいかもしれません。

 

以下のようにしたらどうでしょうか?

 

 1.PDFファイル(PDFコンテキスト)をコントローラで取得

 2.PDFファイルをDocumentにインサート。ここでダウンロードさせたいファイル名をドキュメント名に指定。

 3.2番でインサートしたDocumentからファイルをダウンロードするURLにコントローラでリダイレクト

 

1番のPDFのコンテキストを取得サンプルコードは以下のURLをご参照ください。

http://www.salesforce.com/us/developer/docs/pages/Content/pages_email_sending_attachments.htm?SearchType=Stem&Highlight=pdf.getContent

 

3番のDocumentからのファイルダウンロードURLは以下のとおりです。2番でインサートしたIDを

指定します。

/servlet/servlet.FileDownload?file=<ID>

 

課題としては一時利用で利用したDocumentをいつ削除するか。。。 :smileysad:

 

 

This was selected as the best answer
abex1000abex1000

なるほど、とりあえずそれでいけそうですね。ありがとうございます!

自分のブログでも似たような方法を書いていたのを思い出しました。

 

http://deferloader.blog.uhuru.co.jp/?p=1108

 

abex1000abex1000

別の方法も見つけましたので自己レスです。

 

<apex:page contentType="application/pdf#filename.pdf" renderas="pdf">

とすることで、ファイル名を指定してダウンロードすることができました。

 

abex1000abex1000
連投すいません。やはりこれではだめでした。
timatima

クローズしているのに投稿してすみません。

PDFのファイル名をコントロールする方法を見かけたので投稿します。

 

http://success.salesforce.com/ideaView?id=08730000000BqN0AAK

 

 

<!-- Page you call to download the PDF -->
<apex:page controller="YourController" contentType="application/pdf#yourfilename.pdf">
<apex:include pagename="test" />
</apex:page>
 
<!-- The page which generates the PDF, save this page as "test" -->
<apex:page renderas="pdf">
<p>Hello World!</p>
</apex:page>

 

PDF化するページをincludeしてあげることで、名前の指定ができました。

CSSはちょっと考えて書かないといけませんが、お試しください。