项目

QuestPDF 元素

有时候,根据条件改变文档内容会很有用。Element 组件可以提供这种语法糖,而不会中断流畅的 API 链,如下所示:

// 以前
public static IContainer TableCell(this IContainer container, bool applyBackground = false)
{
    var container = container.Border(0.5f).BorderColor("#222");

    if (applyBackground)
        container = container.Background("#DEE");

    return container.Padding(5);
}

// 之后
public static IContainer TableCell(this IContainer container, bool applyBackground = false)
{
    return container
        .Border(0.5f)
        .BorderColor("#222")
        .Element(x => applyBackground ? x.Background("#DEE") : x) // 使用三元表达式,根据 applyBackground 的值决定是否添加背景色
        .Padding(5);
}

你不必遵循方法链。使用这种方法,也可以在链的末尾结束,如下所示:

public static IContainer TextOrBackground(this IContainer container, string text)
{
    return container
        .Padding(10)
        .Element(x =>
        {
            if (string.IsNullOrWhiteSpace(text)) // 如果 text 为空或者只包含空格,设置元素高度、宽度和背景色
                x.Height(10).Width(50).Background("#DDD");
            else // 否则,设置文本内容
                x.Text(text);
        });
}
在本文档中