【问题标题】:Need Thin Table Borders in PDF Generated by cfDocumentcfDocument 生成的 PDF 中需要细表边框
【发布时间】:2012-05-24 00:54:45
【问题描述】:

我正在使用边框折叠 (CSS) 在我的桌子上制作细边框。它们在屏幕上渲染得很好,但是当它们通过 cfDocument 发送到 PDF 时,它们最终会变成较粗的灰色边框。

我读到 cfDocument 还不支持边框折叠,那么我最好的选择是什么?

ColdFusion 9

【问题讨论】:

    标签: css pdf coldfusion


    【解决方案1】:
    border-bottom: 0.4pt solid #ccc;
    

    【讨论】:

      【解决方案2】:

      @gordon ,您的解决方案非常接近,它确实在 PDF 上显示了细边框。但它产生了另一个问题——一些边界消失了。我想这个解决方案适用于简单的表格,而不是复杂的表格。

      【讨论】:

        【解决方案3】:

        我决定看看 CFDOCUMENT 是否能理解老式的 HTML,因为上述解决方案因浏览器而异。这并不理想,但如果您需要使其工作,这可能会有所帮助:

        <table cellpadding="1" cellspacing="1" bgcolor="black">
            <tr>
                <td bgcolor="white">Data</td>
                <td bgcolor="white">Data</td>
            </tr>
            <tr>
                <td bgcolor="white">Data</td>
                <td bgcolor="white">Data</td>
            </tr>
            <tr>
                <td bgcolor="white">Data</td>
                <td bgcolor="white">Data</td>
            </tr>
        </table>
        

        【讨论】:

        • 这与 Gordon 接受的答案基本相同。
        【解决方案4】:

        报表生成器仅在您想要快速创建交互式表格类型报表时有用,该报表允许用户取消折叠行以获取更多数据详细信息,这些数据详细信息将成为焦点父行的子行。

        我不得不说我发现这非常有用并且非常接近 SSRS 提供的功能。但是在导出到 pdf 或 excel 时并没有真正的帮助。

        【讨论】:

          【解决方案5】:

          表格是 90 年代的,但这似乎适用于 cfdocument pdf(虽然在网络浏览器显示上不一致):

          .tbl {background-color:#000;}
          .tbl td,th,caption{background-color:#fff}
          

          ...

          <table cellspacing="1" class="tbl">
          ...
          </table>
          

          (样式设置中的border-spacing不起作用-您必须将attr放在table标签中)

          【讨论】:

          • 嗯,这是迄今为止最好的答案。它实际上确实给了我想要的细线。这是唯一的解决方案。
          • 但是,它并不完美,因为您必须在 table 标记中手动指定 cellspacing 属性。这可以防止您的屏幕显示具有零 cellspacing 并能够控制打印与屏幕样式。这不是最优的,但至少我们找到了一种获得细线的方法。
          • 在广阔的体育世界中,桌子如何“如此 90 年代”?您希望如何在没有表格的情况下布置表格数据?
          • 我所处的环境是每个人都在切换到 div。当我说我喜欢桌子时,他们笑了。那是在 2010 年之前。我仍然使用表格。很多:-)
          【解决方案6】:

          我在 cfdocument 中遇到了同样的边框问题。以下是我学到的一些技巧:

          而不是像这样设置你的 CSS:

          table td {
            border: solid thin black;
          }
          

          试试这个:

          table, table td {
            border: solid black;
          }
          table {
            border-width: 1px 1px 0 0;
          }
          table td {
            border-width: 0 0 1px 1px;
          }
          

          这明确地使宽度尽可能小。此外,它还避免了由于每个单元格具有自己的 1px 边框然后让它们彼此相邻而导致的“加倍”宽度的问题(因此在单元格之间,您实际上会有一个 2px 边框)。

          此外,您可以减少 cfdocument 标签的“比例”值,以减少所有内容的大小,包括边框的厚度。

          【讨论】:

          • 这实际上是我曾经做过的一种技术,但当我发现 border-collapse 时放弃了它,因为它会在边界连接处产生小间隙。但这可能比我目前得到的粗线更好。谢谢!
          • 嗯...我试过了,它并没有比当它们被格式化为折叠时更细。丹吉特。
          • 你试过调整比例吗?
          【解决方案7】:

          我推荐报告生成器,它可以为您提供精细的像素级控制和分页。

          【讨论】:

          • 报告生成器可能会带来另一组挑战。 ;)
          • 报告生成器真的很糟糕!它非常麻烦,需要学习新的布局/模板范例。
          【解决方案8】:

          cfdocument 有很多限制。如果您正在寻找 css3 支持、javascript 等,我推荐 wkhtmltopdf。它使用 webkit 生成 PDF,因此它支持 Safari/Chrome 支持的大部分内容。

          【讨论】:

          • 我正在使用 wkhtmltopdf 并遇到完全相同的问题 :)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多