2008-09-16 26 views

答えて

17

生成しているページの周りにPDFを配置するには、cfdocumentタグ(format = "PDF")を使用する必要があります。ファイル名属性を指定すると、ドキュメントはブラウザにただちにストリーミングされます。

コンテンツをPDFとして保存したら、cfheaderとcfcontentを組み合わせて使用​​してPDFを添付ファイル(別名で保存)として出力し、そのファイルをレスポンスストリームに追加します。また、cfcontentタグにdeletefile = "Yes"を追加して、ファイルシステムをファイルからきれいに保ちました。余談として

<cfdocument format="PDF" filename="file.pdf" overwrite="Yes"> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
    <title>Hello World</title> 
</head> 
<body> 
    Hello World 
</body> 
</html> 
</cfdocument> 
<cfheader name="Content-Disposition" value="attachment;filename=file.pdf"> 
<cfcontent type="application/octet-stream" file="#expandPath('.')#\file.pdf" deletefile="Yes"> 

:私はちょうど下の例ではファイル名をfile.pdfを使用していますが、あなたは競合状態に起因する問題を回避するために、ファイル名の一部にランダムまたはセッション生成された文字列を使用する場合があります。

1

私はColdFusionに慣れていませんが、ユーザーがアプリケーション/オクテットストリームであることをリクエストしたときにページのContent-Typeを設定する必要があります。これにより、毎回ダウンロードが促されます。

希望すると便利です。

3

PDFを保存しないようにするには、cfdocumentをファイル名なしで使用すると、cfheaderとcfcontentを使用せずに、pdf(フラッシュペーパー)を直接ブラウザに送信します。

注意:cfheader/cfcontentを使用する場合と同様に、ブラウザにキャッシュがフラッシュされる前にこれを行う必要があります。これは、基本的にファイルを保存せずに同じことを実行するためです。

コンテンツを取得するには、おそらくcfsavecontentを/ include/etcと同じ呼び出しで囲みます。 2つの大きな例外を除いて、ページを生成します。 cfdocumentは外部スタイルシートに問題があるようですが、インクルードを使用してスタイルを文書に直接入れるのは良い考えです。代わりに@importを使ってみることもできます - これは一部の人には役に立ちます。また、時々破損する可能性があるので、イメージへの相対的なリンクには注意が必要です。

3

<cfdocument>のアプローチは、それを達成するための認可された方法ですが、既存のPDFドキュメントを操作する上で可能なすべてを提供するわけではありません。あらかじめ設計された印刷解像度のPDFテンプレートを使用してクーポンを生成する必要があるプロジェクトがありました。 <cfdocument>は、HTMLに埋め込まれたビットマップイメージでのみ出力を近似させてくれました。実際、大きな画像を作成してHTMLで拡大縮小することで、印刷解像度を偽造することができましたが、元の画像はクリーンできれいなベクター画像ファイルでした。

私は<cfx_pdf>のコピーを使って仕事を終えました。 (Developer's Site,CF Tag Store)PDFフォームの記入、権限の設定、ファイルのマージ、ベクターグラフィックス、テーブル、テキストの描画、カスタムフォントの使用など、既存のPDFドキュメントを操作できるJava PDFライブラリのCFラッパーです。あなたがそれを使って喜んで作業しているなら、かなり素晴らしい結果を得ることができます。

1つの欠点は、開発者がこの製品を牧場に放置しているように見えることです。開発者サイトはまだ2003年に著作権があり、ColdFusion MX 6.1以降は何も言及していません。私はいくつかのバグを修正し、必要に応じて動作させるために、暗号化されたテンプレートのいくつかを壊す必要がありました。それにもかかわらず、それは強力なツールです。

関連する問題