如果我使用
PdfContentByte cb = writer.getDirectContent();
cb.setColorFill(new CMYKColor(c, m, y, k));
这很简单。但是我有一些 Swing 组件,它们在 Graphics2D 中绘制自我,使用这样的东西非常有说服力:
PdfContentByte cb = writer.getDirectContent();
Graphics2D g2 cb.createGraphics(w, h);
mySwingComponent.paint(g2);
g2.dispose();
它工作正常,但颜色由 iText 从 java 的 sRGB 转换为 CMYK。我想用 CMYK 颜色直接绘制。我正在尝试在我的 Swing 组件中这样做
MySwingComponent extends JComponenet {
void paint(Graphics2D g2) {
g.setColor(new com.lowagie.text.pdf.CMYKColor(0, 0, 0, 1));
}
}
不幸的是,它只是不起作用。有什么方法可以准确地指定将绘制哪种 CMYK 颜色?
PS 我的问题的背景是,如果我以 garyscale 绘制东西,那么在 Adobe Illustrator 中,PDF 颜色不仅仅是(0、0、0、0.4 ) ,而是(0.1、0.15、0.2、0.4f)。
UPD:我现在有解决方案:只需使用 g2.setPaint(new CMYKColor(1f, 0.0f, 0.0f, 0.0f)); 在您的绘画中(Graphics2D g2)将强制 iText 生成 CMYK Pdf