是否有人有示例代码可为PDF添加直接音调? 它是为打印机生产检测矩形切割而成的。 这个专色被称为«decoupe»,我需要矩形。 我不需要修改分隔的CMYK值。
我需要在文档中使用一种名为“ decoupe”的颜色,并使用该颜色创建具有该颜色的矩形,打印机会检测到该颜色以将文档切成该格式。在PDF文档中,该行应如下所示:14 0 obj [/ Separation / decoupe / DeviceCMYK << / Range [0 1 0 1 0 1 0 1] / C0 [0 0 0 0] / C1 [0.000000 0.000000 0.000000 0.000000 ] / FunctionType 2 /域[0 1] / N 1 >>] endobj
答案 0 :(得分:1)
此代码为具有专色的现有PDF添加一个矩形。我将c1的值更改为1 1 1 1,以便可以看到一些东西(您是0 0 0 0)。
public static void main(String[] args) throws IOException
{
PDDocument doc = PDDocument.load(....);
COSArray array = new COSArray();
array.add(COSName.SEPARATION);
array.add(COSName.getPDFName("decoupe"));
array.add(COSName.DEVICECMYK); // alternate color
COSDictionary fdict = new COSDictionary();
fdict.setInt(COSName.FUNCTION_TYPE, 2);
COSArray range = new COSArray();
range.add(COSInteger.get(0));
range.add(COSInteger.get(1));
range.add(COSInteger.get(0));
range.add(COSInteger.get(1));
range.add(COSInteger.get(0));
range.add(COSInteger.get(1));
range.add(COSInteger.get(0));
range.add(COSInteger.get(1));
COSArray domain = new COSArray();
domain.add(COSInteger.get(0));
domain.add(COSInteger.get(1));
COSArray c0 = new COSArray();
c0.add(COSFloat.get("0"));
c0.add(COSFloat.get("0"));
c0.add(COSFloat.get("0"));
c0.add(COSFloat.get("0"));
COSArray c1 = new COSArray();
c1.add(COSFloat.get("1"));
c1.add(COSFloat.get("1"));
c1.add(COSFloat.get("1"));
c1.add(COSFloat.get("1"));
fdict.setItem(COSName.DOMAIN, domain);
fdict.setItem(COSName.RANGE, range);
fdict.setItem(COSName.C0, c0);
fdict.setItem(COSName.C1, c1);
fdict.setInt(COSName.N, 1);
PDFunctionType2 func = new PDFunctionType2(fdict);
array.add(func); // tint transform
PDColorSpace spotColorSpace = new PDSeparation(array);
PDPage page = doc.getPage(0);
PDPageContentStream cs = new PDPageContentStream(doc, page, AppendMode.APPEND, true, true);
PDColor color = new PDColor(new float[]{0.5f}, spotColorSpace);
cs.setStrokingColor(color);
cs.setLineWidth(10);
cs.addRect(50, 50, 300, 300);
cs.stroke();
cs.close();
doc.save(...);
}
我用作帮助的是:PDSeparation.java的源代码以及从源代码下载中获得的CreateGradientShadingPDF.java示例,其中一个具有2类功能,可以轻松复制和修改。