0

タグを使用する<cfsavecontent>と、その出力はサーバーによって提供されているようです (変数は出力されません) <cfsavecontent>

これが重要な場合: 私のアプリケーションは ColdSpring、ModelGlue、Transfer ORM を使用しています。

関数のコード例は次のとおりです。

<cfsavecontent variable="testvar">
<cfinclude template="test.cfm" />
</cfsavecontent>
<cfreturn testvar>

そしてテンプレート:

<cfdocument format="PDF" pagetype="A4" orientation="portrait" unit="cm">
<cfoutput>
<!--- PDF content here --->
</cfoutput>
</cfdocument>

PDF コンテンツはブラウザー (Google Chrome) によって解析されていますが、ビューは読み込まれていません。これを防ぐにはどうすればよいですか?

明確にするために#testvar#、このコードではまだ変数を出力していませんが、とにかくブラウザーにテンプレートをロードしているようです。

4

3 に答える 3

8

あなたがやろうとしていることを達成するために、name属性を使用し<cfdocument>てPDFデータを変数に入れるのではなく、変数に入れるべきではありません<cfsavecontent>か?

開示:<cfdocument>概念実証のコードとテスト以外に使用したことはありませんが、それはドキュメントから推測しているものです。

于 2013-09-11T09:57:12.067 に答える
2

複数のPDFドキュメントをマージする必要もあったため、最終的には次のようになりました。最初の問題の解決策を提供してくれた Adam Cameron に感謝します。

  • テンプレート ファイルでは<cfdocument>、属性を持つタグを使用しnameて PDF を変数に保存します (これについては Adam Cameron に感謝します)。
  • 次に、すべての PDF ドキュメントを配列にバイナリ形式で保存します。
  • 私の見解では、<cfpdf>mergeアクションを使用し、cfloop を使用して、配列内の配列をループすることで、PDF ドキュメントをマージします。
  • 最後に<cfcontent>、変数属性を使用してコンテンツを表示しますtoBinary(myPdf)

これで私はここにたどり着きました。

于 2013-09-13T12:12:37.463 に答える
1

cfinclude は test.cfm ページを処理し、cfdocument を構成した方法により、ブラウザーで PDF ドキュメントが「開かれます」。ディスクにファイルを保存することで、このファイルが開かないようにすることができます。

<cfdocument format="PDF" pagetype="A4" orientation="portrait" unit="cm" filename ="test.pdf" overwrite ="yes">

ただし、これは cfcontent タグでの cfinclude の実行を妨げるものではなく、ブラウザで開くのを妨げるだけです。

サーバーへのリクエストとして cfinclude を確認できます。これは常に実行されます。

解決策は、実際にpdfを生成したい瞬間にcfdocumentを含むtest.cfmファイルでリクエストを呼び出すことです。

例: クライアントで JavaScript を使用してレポート サービスを呼び出します。レポート サービスは、pdf レポートを生成して画面に表示します。

お役に立てれば。

于 2013-09-11T10:36:00.440 に答える