【问题标题】:Color Document Sections in iText SharpiTextSharp 中的彩色文档部分
【发布时间】:2014-09-10 17:52:48
【问题描述】:

帮助,我需要使用 iTextSharp 创建一个 PDF 1) 整个文档的绿色背景 2) 文本(标题、表格、段落)出现在白色背景上。 3)特殊部分以粉红色(或其他颜色)出现 4) 蓝底白字标题。

我可以构建一个简单的文档,但是背景颜色真的让我很反感。

我使用段落添加内容,但我不确定如何设置段落的背景颜色,或将它们组合在一起。

【问题讨论】:

    标签: itextsharp


    【解决方案1】:

    您使用Paragraphs、PdfPTables 等对象创建文档。您使用PdfContentByte 方法绘制矩形。您可以像这样从PdfWriter 获得PdfContentByte 实例:

    writer.getDirectContentUnder(); // Java
    

    writer.DirectContentUnder; // C#
    

    通过使用getDirectContentUnder()而不是getDirectContent(),在Paragraphs、PdfPTables等下绘制矩形。

    您的主要问题是跟踪坐标:您需要知道左下角和右上角的坐标。

    为整页绘制背景是不费吹灰之力的。我昨天已经回答了这个问题:How to draw border for whole pdf pages using iText library 5.5.2

    当然,在那个答案中,我为矩形定义了边框颜色,因为 OP 只需要每个页面上的红色边框。您需要定义矩形而不是边框​​的填充颜色。

    通过检查昨天问题的答案,您会发现页面事件的概念。您还将发现其他页面事件方法,例如onParagraph()onParagraphEnd()。这些方法接收每个段落开头和结尾的 Y 坐标。您可以使用这些坐标在页面事件中绘制矩形。

    要解决您的问题,您可以添加一个BaseColor 成员变量、一个跟踪初始 Y 值的变量,等等。这将需要一些编程,但是通过我的回答中解释的所有机制,您应该能够满足您的要求。

    【讨论】:

      【解决方案2】:

      我是这样完成的:

      1. 设置文档的背景颜色
      2. 创建了 1 列全页宽表并设置了白色背景 每个单元格。
      3. 将我的所有内容添加到单元格中
      4. 为每个部分添加一个新单元格
      5. 在单元格之间绘制绿色边框,与背景颜色相同。

      在单元格中放置内容解决了跟踪坐标的问题。由于内容可能包含多个段落、子表等。我不确定 onParagraphEnd 是否总是会触发。

      将内容放在单元格中还可以控制颜色。

      【讨论】:

        猜你喜欢
        • 2015-08-23
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        • 2021-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多