You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PDF电费账单交替行矩形样式设置问题(需黑色边框+蓝色背景)

PDF电费账单交替行矩形样式设置问题(需黑色边框+蓝色背景)

我太懂你这种需求了!做电费账单PDF的时候,交替行的高亮样式确实能让表格看起来清晰很多,你现在用DrawRectangle画出来全黑的块,肯定是因为默认把填充色和边框色搞成同一个了,我之前做类似的账单也踩过这个坑,给你说说怎么改:

核心问题拆解

你要的是「黑色边框+蓝色背景」,但原来的代码应该是默认用了边框的颜色来填充整个矩形,所以才会变成黑块——解决的关键就是把填充色和边框色分开指定。

具体修改步骤

1. 先设置填充色与边框色

不管你用的是哪个PDF处理库,基本都支持单独设置填充(Fill)和描边(Stroke,也就是边框)的颜色:

  • 填充色选适合账单的浅蓝(比如RGB(173,216,230),不会太刺眼)
  • 边框色固定为黑色RGB(0,0,0)
  • 别忘了设置边框的宽度,就是你原来参数里的1

2. 调整矩形绘制代码

替换你原来的DrawRectangle调用,改成先指定颜色,再执行「填充+描边」的操作:

// 先设置填充色(浅蓝)
page.SetFillColor(new PdfColor(173, 216, 230));
// 设置边框色(黑色)
page.SetStrokeColor(new PdfColor(0, 0, 0));
// 设置边框宽度
page.SetLineWidth(1);

// 定义矩形的位置、宽高
PdfPoint position = new PdfPoint(44, 300);
float width = 40;
float height = 10;

// 绘制矩形路径,然后同时填充和描边
page.Rectangle(position.X, position.Y, width, height);
page.FillStroke();

如果你的库支持直接在DrawRectangle里传颜色参数,那更省事,比如:

page.DrawRectangle(
    new PdfPoint(44, 300),
    40,
    10,
    1, // 边框宽度
    true, // 启用填充
    new PdfColor(173,216,230), // 填充色
    new PdfColor(0,0,0) // 边框色
);

3. 实现交替行逻辑

要让行交替显示蓝色背景,只需要在循环生成行的时候加个判断:

int startY = 300;
int rowHeight = 10;
int totalRows = 10; // 你的总条数
int x = 44;
int rowWidth = 40;

for (int i = 0; i < totalRows; i++)
{
    int currentY = startY - (i * rowHeight);
    
    if (i % 2 == 0)
    {
        // 偶数行(或者奇数行,看你要哪行高亮)用蓝色背景
        page.SetFillColor(new PdfColor(173, 216, 230));
        page.SetStrokeColor(new PdfColor(0, 0, 0));
        page.SetLineWidth(1);
        page.Rectangle(x, currentY, rowWidth, rowHeight);
        page.FillStroke();
    }
    else
    {
        // 奇数行用白色背景+黑边框,和普通行保持一致
        page.SetFillColor(new PdfColor(255, 255, 255));
        page.SetStrokeColor(new PdfColor(0, 0, 0));
        page.SetLineWidth(1);
        page.Rectangle(x, currentY, rowWidth, rowHeight);
        page.FillStroke();
    }

    // 这里可以继续绘制该行的文字内容...
}

小提示

  • 颜色值可以根据你的账单UI调整,比如想要更深的蓝就用RGB(100,149,237)
  • 循环里的i%2==0可以改成i%2==1,看你要从第一行还是第二行开始显示蓝色
  • 有些库的坐标系是从下往上的,要是你的Y坐标不对,记得调整currentY的计算方式

这样改完之后,就能完全实现你Excel示例里的交替行高亮效果啦,亲测有效😎

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:03:52