5

我在页面上有一个表格,其中包含从查询生成的数据。这使得无法预测将生成多少行。

当使用 cfdocument 将页面输出为 PDF 时,表格通常在分页符处被一分为二。

为了清楚起见,是否有任何简单的方法可以在新页面上包含表格标签?

4

4 回答 4

4

我不得不使用 cfdocument 相当多的工作,让它在某些情况下可用可能是一个真正的熊。

我相信您的问题的答案可以在此页面上找到,因为您知道每页上有多少条记录(静态行高): COLDFUSION: cfdocument and force a pagebreak

以下是我发布并解决的有关 cfdocument 的其他一些问题,希望对您有所帮助。

于 2013-02-13T13:30:54.083 回答
0

只需添加一些不起作用的东西(在 CF10 中,我认为它使用与 CF8 和 CF9 相同的 CFdoc 渲染器):

  • 使用css:after在 header 元素后添加内容(CFdocument 不支持 css3)
  • 头{显示:表头组;}(不支持)
  • 在表输出中使用javascript动态添加标题行(pdf 渲染器不执行 js)
  • 在 cfdocument 正文中测试#cfdocument.currentpagenumber#(该变量似乎只存在于页眉和页脚中)
  • 添加一个在(soundsOfTheDot 回答了他的另一个问题,说这行得通,但在我的测试中,渲染器似乎关闭了每页末尾的表格,然后重新打开它)
  • 在测试中添加一个表,就像在第一个之后的所有页面上插入它(这几乎可以完成工作,如果你可以硬编码你的列宽,那么两个表对齐并确保这个假之间没有间隙标题和实际表格)

我希望这可以节省一些时间。

于 2013-05-20T05:34:34.617 回答
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

我的 PDF 恰好适合每页 21 行,所以我确保当前行 MODULO 21 等于 0。请注意,我从每页一个新表开始,所以我把新表和只<table>放在<thead>里面用于上一页的表格和分页符。然后我跟着它,瞧,它就像一个魅力。我还为 PDF 添加了一个漂亮的页脚,只是为了好玩。<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 回答