1

データベースに複数の PDF が BLOB として保存されており、それらをマージして、ユーザーにストリーミングする必要がある単一の PDF を作成する必要があります。

ブロブから単一の pdf をレンダリングする場合、これを行うのはかなり簡単であることは理解していますが、複数のブロブをマージする方法がわかりません。

<cfheader name="Content-Disposition" value="inline; filename=#document.name#.#document.ext#">
<cfcontent type="application/pdf" variable="#document.content#">

CFPDF がこの機能に役立つことがわかりましたが、ブロブを cfpdf 変数に入れることができないようです。同様の質問が以前にここで尋ねられましたが、私が求めている答えがありません。

ありがとう!

4

2 に答える 2

1

Blob データをファイルに変換してみて (ram://可能な場合はディスクへの書き込みを保存するためにメモリ内で)、それをcfpdfマージ ソースとして使用します。cfpdf action="merge"タグ内でクエリをループすると、ブロブごとに実行できます。

<cfquery name="q" datasource="test">
  SELECT content FROM pdfs
</cfquery>

<cfpdf action="merge" name="mergedPdf">
  <cfloop query="q">
    <cfset tempBinary=q.content><!---intermediate var seems to be necessary in some environments --->
    <cffile action="write" output="#tempBinary#" file="ram://temp.pdf">
    <cfpdfparam source="ram://temp.pdf">
  </cfloop> 
</cfpdf>
<cfcontent type="application/pdf" variable="#ToBinary( mergedPdf )#" reset="true">

単一の一時ファイルを使用できることに注意してください。クエリの BLOB ごとに異なる一時ファイルを作成する必要はありません。

于 2014-08-01T08:52:47.423 に答える