Don't have an account?
Search for an answer or ask a question of the zone or Customer Support.
You need to sign in to do that
Sign in to start searching questions
Signup for a Developer Edition
Sign in to start a discussion
VFにて請求書をPDF化したのですが、これを添付Fileに保存したいですが、やり方がわかりません。どなたか教えてもらえないでしょうか?
VFのPDFを添付ファイルに保存する方法ですが次のようなやり方でできると思います。
public Attachment doCreateAttachment(Id prmParentId) { // PDFのVFを指定 PageReference pageRef = Page.OutputPdfPage; pageRef.getParameters().put('id', prmParentId); // 添付ファイル Attachment objAttachment = new Attachment(); // ファイル名 objAttachment.Name = 'Test.pdf'; // 本文 objAttachment.Body = pageRef.getContent(); // 関連先 objAttachment.ParentId = prmParentId; // メモ&添付INSERT insert objAttachment; return objAttachment; }
ちょっと時間が経ってしまいましたが、やってみました。
VFのエラーがでてしまい、解決できません。 下記のようなエラーはどのような場合が考えられるのでしょうか?
(エラーメッセージ)
ネストした getContent 呼び出しが多すぎます
初歩的ですみません・・・
そのエラーメッセージは初めて見ました。
添付するPDFファイルの容量が大きすぎるとかではないかと思います。
試しに空白のPDFのVFページを用意して、それが正常に添付されるか
確認してみてはどうでしょうか。
もし、空白のPDFも添付に失敗したら別に原因があるかもしれません。
返信ありがとうございます。空白のPageを作りSaveしてみたのですが、同じ結果でした。
また、目的のFile(114kb)をDesktopに保存してから添付に保存してみましたが問題なくSaveできました。
やろうとしていることは見積書です。カスタムボタンをクリックすると見積書が生成されこれを添付に保存したいだけです。
見積書のApex Classを作ってその中にこの添付保存のロジックを組み込んだのですが、これがいけなかったのでしょうか?
ご助言いただけると大変助かります。
よろしくお願いします。
自分なりに色々とやってみました。
ページとコントローラーをCopyしてもう1セット作り、ここにAttachmentの保存のロジックを入れました。この際にReferenceするPageは元のPageでここには保存するLogicはないです。それでやったらうまくいきました。多分、自分で自分を呼びたすのでLoopしてしまったのかもしれません。ですが、まったく同じLogicが2つのClassで存在してしまうためにあまりよくないなと思っています。もっとスマートなやり方があるのでしょうか? ご助言いただけると大変助かります。
PDFのVFページと添付ファイルを保存する処理は別に分けるといいと思います。
次の処理ではPDFのVFを呼び出しコンストラクタの処理が実行されるところまで行われていると思います。
// PDFのVFを指定 PageReference pageRef = Page.OutputPdfPage; pageRef.getParameters().put('id', prmParentId);
なのでカスタムボタンで保存するときのApexクラスにはPDFの出力に関する処理を記載必要はありません。
VFのPDFを添付ファイルに保存する方法ですが次のようなやり方でできると思います。
ちょっと時間が経ってしまいましたが、やってみました。
VFのエラーがでてしまい、解決できません。 下記のようなエラーはどのような場合が考えられるのでしょうか?
(エラーメッセージ)
ネストした getContent 呼び出しが多すぎます
初歩的ですみません・・・
そのエラーメッセージは初めて見ました。
添付するPDFファイルの容量が大きすぎるとかではないかと思います。
試しに空白のPDFのVFページを用意して、それが正常に添付されるか
確認してみてはどうでしょうか。
もし、空白のPDFも添付に失敗したら別に原因があるかもしれません。
返信ありがとうございます。空白のPageを作りSaveしてみたのですが、同じ結果でした。
また、目的のFile(114kb)をDesktopに保存してから添付に保存してみましたが問題なくSaveできました。
やろうとしていることは見積書です。カスタムボタンをクリックすると見積書が生成されこれを添付に保存したいだけです。
見積書のApex Classを作ってその中にこの添付保存のロジックを組み込んだのですが、これがいけなかったのでしょうか?
ご助言いただけると大変助かります。
よろしくお願いします。
自分なりに色々とやってみました。
ページとコントローラーをCopyしてもう1セット作り、ここにAttachmentの保存のロジックを入れました。この際にReferenceするPageは元のPageでここには保存するLogicはないです。それでやったらうまくいきました。多分、自分で自分を呼びたすのでLoopしてしまったのかもしれません。ですが、まったく同じLogicが2つのClassで存在してしまうためにあまりよくないなと思っています。もっとスマートなやり方があるのでしょうか? ご助言いただけると大変助かります。
PDFのVFページと添付ファイルを保存する処理は別に分けるといいと思います。
次の処理ではPDFのVFを呼び出しコンストラクタの処理が実行されるところまで行われていると思います。
なのでカスタムボタンで保存するときのApexクラスにはPDFの出力に関する処理を記載必要はありません。