8

私はColdFusionで動的PDFを作成していますが、「ページブレーク」に問題があります。問題のページには、1つのレコード、または最大60以上のレコードが含まれる可能性があります。各レコードは、テーブルの2行に表示されます。返されたレコードの一部はページ間で分割されています(最初の行はページ1の最後にあり、2番目の行は次の行の一番上の行です)。

表示されたHTMLのサンプルレコード:

<tr>
  <td>Title</td><td>Price</td>
  <td colspan="2">Description</td>
</tr>

クライアントのリクエストごとに、1ページあたり=<9レコードを表示しようとしています

これは私が試したものの唖然としたサンプルです:

<cfdocument format="PDF">
<cfoutput query = "sqllookup">
<cfset loopcount = loopcount + 1>
<cfif loopcount EQ '9'>
 <cfdocumentitem type="pagebreak" />
<cfelse>
<tr>
  <td>#Title#</td><td>#Price#</td>
  <td colspan="2">#Description#</td>
</tr>
</cfif>
</cfoutput>
</cfdocument>

これは機能しません(9番目のレコードのみを非表示にします)。私はいくつかの異なるアイデアを試しましたが、現在困惑しています。私は何かを見過ぎていますか?

前もって感謝します。

ColdFusion MX 7.(テキストカットオフの問題のホットフィックスも実行しました 。http://kb2.adobe.com/cps/402/kb402093.html

4

4 に答える 4

11

表示するか表示するかを選択しているため、9番目のレコードを非表示にしています。

if 9th record
    break page
else
    show record
end if

あなたが欲しいものはもっと似ています:

<cfoutput query = "sqllookup">
    <!--- this is the 9th row, because 9 mod 9 is 0 --->
    <cfif not sqllookup.currentrow mod 9>
        <cfdocumentitem type="pagebreak" />
    </cfif>
    <tr>
        <td>#Title#</td><td>#Price#</td>
        <td colspan="2">#Description#</td>
    </tr>
</cfoutput>
于 2010-01-22T00:53:32.500 に答える
1

この問題のオンとオフを数か月間取り組んだ後、aの内容を(つまり)でラップすると、行内のページ分割を防ぐことができることを発見しtdましdiv<tr><td><div>Cell Contents</div></td></tr>。この設定では、通常はページ間で行を分割するページ分割が代わりに行のに配置され、最初のページの最後に少し余分な空白が作成され、次のページの最初に行が配置されます。

複数のセルを持つ行に関する注意:行全体に対して上記の動作を引き起こすには、単一のtdネストされたdivで十分です。

<tr>
    <td>Blah blah blah blah blah</td>
    <td>Gnar gnar gnar gnar gnar</td>
    <td><div>Soda POP soda POP soda POP</div></td>    <!--- the fix --->
    <td>Stellar!</td>
</tr>
于 2012-05-17T07:59:24.430 に答える
0

style="page-break-inside: avoid;"2ページに分割したくない要素にを追加してみてください。

例えば、

<tr style="page-break-inside: avoid;">
   <td>#Title#</td><td>#Price#</td>
   <td colspan="2">#Description#</td>
</tr>
于 2010-01-21T21:06:56.937 に答える
0

私にとって、すべてのトリックやフォーラムのヒントなどを試した後、cf8でより大きなコードブロック(画像、テーブル、divブロックなどを含む)に対して機能したのは次のとおりです。

  • ページ分割以外の部分を次のようにラップします

    <div>...</div>

  • <br>しかし、その後の新しい行(コード内)の非常に単純な例:

    <div> ... your stuff ... </div> <br>

それはうまくいきました、地獄は理由を知っています...

于 2017-04-28T09:12:06.680 に答える