5

クエリから生成されたデータを含むテーブルがページにあります。これにより、生成される行数が予測できなくなります。

cfdocumentを使用してページをPDFとして出力する場合、ページ分割時にテーブルが2つに分割されることがよくあります。

わかりやすくするために、新しいページにテーブルラベルを含める簡単な方法はありますか?

4

4 に答える 4

4

私はcfdocumentをかなり使用する必要があり、特定の状況で使用できるようにすることは本当の負担になる可能性があります。

各ページにいくつのレコードがあるか(静的な行の高さ)がわかっているので、あなたの質問に対する答えはこのページにあると思います 。COLDFUSION:cfdocumentと強制的なページブレーク

cfdocumentに関して私が投稿し、解決した他のいくつかの質問があります。それらがお役に立てば幸いです。

于 2013-02-13T13:30:54.083 に答える
0

このアプローチを試してみてください、私はそれを使用しました

<cfset amount="6" />
<cfdocument
format="pdf"
unit="cm"
pageType="A4"
filename="#path##name#.pdf">
 <cfoutput>
    <cfloop from="1" to="#amount#" index="i">
        <cfset filename = "#name#_#i#" />
        <cfimage
            action="convert"
            destination="#path#codes/#filename#.jpg"
            source="#path#codes/#filename#.png" />
        <img src="file://#path#codes/#filename#.jpg" style="width: 3.58cm; margin: 0 0.2cm 0.5cm;">
    </cfloop>
</cfoutput>

于 2013-02-14T13:53:50.043 に答える
0

動作しないものをいくつか追加するだけです(CF10では、CF8およびCF9と同じCFdocレンダラーを使用していると思います)。

  • css:afterを使用してヘッダー要素の後にコンテンツを追加します(CFdocumentはcss3をサポートしていません)
  • thead {display:table-header-group; }(サポートされていません)
  • テーブル出力内でjavascriptを使用して、ヘッダー行を動的に追加します(pdfレンダラーはjsを実行しません)
  • cfdocument本文で#cfdocument.currentpagenumber#をテストします(その変数はヘッダーとフッターにのみ存在するようです)
  • 追加する(soundsOfTheDotはこれが機能したと言って彼の他の質問に答えましたが、私のテストでは、レンダラーは各ページの終わりにテーブルを閉じてから再び開くようです)
  • 最初のページの後にすべてのページに挿入するようなテストでテーブルを追加します(2つのテーブルが整列し、この偽物の間にギャップがないことを確認するために列幅をハードコーディングできる場合、これはほとんど仕事をしますヘッダーと実際のテーブル)

それが数時間を節約することを願っています。

于 2013-05-20T05:34:34.617 に答える
0

私のPDFはたまたま1ページあたり21行に収まったので、現在の行MODULO21が0に等しいことを確認しました。ページごとに新しいテーブルから開始することに注意してください<table>。前のページのテーブルとページブレーク。それから私はそれに続きます、そして出来上がり、それは魅力のように働きます。また、ファンシーのためだけにPDFに素敵なフッターを追加しました。<thead><cfif></tbody></table><tbody>

<cfquery name="getDeletedBarcodes" datasource="#application.dsn#">
    SELECT * FROM deletedRecords
</cfquery>
<cfdocument filename="reports/DeletedBarcodes.pdf" format="PDF" overwrite="true">
    <cfif getDeletedBarcodes.RecordCount NEQ 0>
        <h2 align="center" style="text-decoration: underline; font-weight: bold">Deleted Barcode Records</h2>
        <table class="deletedBarcodesTable" border="1" style="margin-top: 10px" rules="rows">
            <thead>
                <tr>
                    <th>Barcode</th>
                    <th>Building</th>
                    <th>Room</th>
                    <th>Location</th>
                    <th>Shelf</th>
                    <th>Inventoried</th>
                    <th>Deleter Name</th>
                    <th>Time Deleted</th>
                    <th>Reason Deleted</th>
                </tr>
            </thead>
    <cfelse>
        <p>There are no records to show that have deleted barcodes.</p>
    </cfif>
    <cfloop query="getDeletedBarcodes">
        <cfoutput>
            <cfif getDeletedBarcodes.currentRow MOD 21 EQ 0>
                </tbody></table>
                <cfdocumentitem type="pagebreak" />
                <table class="deletedBarcodesTable" border="1" style="margin-top: 10px" rules="rows">
                    <thead>
                        <tr>
                            <th>Barcode</th>
                            <th>Building</th>
                            <th>Room</th>
                            <th>Location</th>
                            <th>Shelf</th>
                            <th>Inventoried</th>
                            <th>Deleter Name</th>
                            <th>Time Deleted</th>
                            <th>Reason Deleted</th>
                        </tr>
                    </thead>
                    <tbody>
            </cfif>
            <tr>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "Barcode") OR NOT len(Barcode)><strong style="color: red">N/A</strong><cfelse>#Barcode#</cfif></td>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "Building") OR NOT len(Building)><strong style="color: red">N/A</strong><cfelse>#Building#</cfif></td>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "Room") OR NOT len(Room)><strong style="color: red">N/A</strong><cfelse>#Room#</cfif></td>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "Location") OR NOT len(Location)><strong style="color: red">N/A</strong><cfelse>#Location#</cfif></td>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "Shelf") OR NOT len(Shelf)><strong style="color: red">N/A</strong><cfelse>#Shelf#</cfif></td>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "Inventoried") OR NOT len(Inventoried)><strong style="color: red">N/A</strong><cfelse>#LEFT(Inventoried, 10)#</cfif></td>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "DeleterName") OR NOT len(DeleterName)><strong style="color: red">N/A</strong><cfelse>#DeleterName#</cfif></td>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "TimeDeleted") OR NOT len(TimeDeleted)><strong style="color: red">N/A</strong><cfelse>#TimeDeleted#</cfif></td>
                <td align="center"><cfif NOT StructKeyExists(getDeletedBarcodes, "ReasonDeleted") OR NOT len(ReasonDeleted)><strong style="color: red">N/A</strong><cfelse>#ReasonDeleted#</cfif></td>
            </tr>
        </cfoutput>
    </cfloop>
    <cfdocumentitem type="footer"> 
        <cfoutput>
            <div style="border-top: 5px solid black; border-top-width: 100vw">
                <span style="left: 0; float: left">#DateFormat(Now(), "full")#</span>
                <span style="right: 0; float: right">Page #cfdocument.currentpagenumber# of #cfdocument.totalpagecount#</span>
            </div>
        </cfoutput>
    </cfdocumentitem>
</cfdocument>
于 2020-01-31T22:27:36.660 に答える