如何用Lab颜色填充矩形?Itext7无PdfLabColor类的实现方案
在iText7中使用Lab颜色填充矩形
iText7并没有弱化Lab颜色的支持,只是调整了API的组织方式——不再单独提供PdfLabColor类,而是通过Color类的静态方法来创建Lab颜色实例。
你可以通过Color.GetLabColor(float l, float a, float b)方法直接生成Lab颜色,若需要透明度,还可以使用重载方法Color.GetLabColor(float l, float a, float b, float alpha)。
修改你的代码如下:
float[] labValues = { 35.76f, 26.74f, -35.51f }; var targetPdfPath = @"e:\labcolor.pdf"; using (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(targetPdfPath))) { var pageSize = PageSize.A4; Document doc = new Document(pdfDoc, pageSize); var page = pdfDoc.AddNewPage(pageSize); PdfCanvas pdfCanvas = new PdfCanvas(page); // 通过GetLabColor创建Lab颜色实例 Color labColor = Color.GetLabColor(labValues[0], labValues[1], labValues[2]); pdfCanvas.SaveState(); pdfCanvas.SetFillColor(labColor); pdfCanvas.Rectangle(100f, pageSize.GetHeight() - 200, 100f, 100f); pdfCanvas.FillStroke(); pdfCanvas.RestoreState(); }
关键说明
Color.GetLabColor()方法会自动处理Lab颜色空间的定义,无需手动创建颜色空间对象- 若需要半透明效果,只需添加alpha参数,比如
Color.GetLabColor(35.76f, 26.74f, -35.51f, 0.5f) - iText7将所有颜色类型的创建入口统一到
Color类,让API更简洁统一,并非功能删减
内容的提问来源于stack exchange,提问作者zhusp
相关产品推荐
相关产品推荐

