pdf-lib 使用的是什么颜色格式?如何将标准RGB转换为对应格式?
pdf-lib颜色格式说明及转换方法
支持的颜色格式
pdf-lib 内置的rgb()、cmyk()、grayscale()等颜色创建函数,要求所有输入的颜色分量均为0~1区间的归一化浮点值:
- 常规0-255范围的RGB颜色,需将R/G/B分量分别除以255得到归一化值
- 常规0-100范围的CMYK颜色,需将C/M/Y/K分量分别除以100得到归一化值
直接传入超过1的分量值会触发参数校验错误。
0-255标准RGB转pdf-lib兼容格式方法
对三个RGB分量分别做归一化计算即可,可直接参考如下实现:
// 数值钳位工具,避免输入超范围值 const clamp = (val, min, max) => Math.min(Math.max(val, min), max) // RGB转换函数:输入0-255范围的r/g/b值,返回pdf-lib可用的颜色对象 const convertRgbToPdfLib = (r, g, b) => { return rgb( clamp(r, 0, 255) / 255, clamp(g, 0, 255) / 255, clamp(b, 0, 255) / 255 ) } // 调用示例:转换RGB(156, 132, 67) const docFillColor = convertRgbToPdfLib(156, 132, 67)
如果需要转换CMYK格式,同理对每个0-100范围的分量除以100即可:
const convertCmykToPdfLib = (c, m, y, k) => { return cmyk( clamp(c, 0, 100) / 100, clamp(m, 0, 100) / 100, clamp(y, 0, 100) / 100, clamp(k, 0, 100) / 100 ) }
内容的提问来源于stack exchange,提问作者conor909
相关产品推荐
相关产品推荐

