請參閱如下
1. get the PDColor from a PDF file(spotColor.pdf),and make sure that the spot colors which you well used are in this PDF file.(I made the file by Adobe Illustrator)
public static Map<String, PDColor> getSpotColor() {
Map<String, PDColor> colors = new HashMap<String, PDColor>();
PDDocument spotColorFile = null;
try {
spotColorFile = PDDocument.load(new FileInputStream(new File(
"d:\\spotColor.pdf")));
for (PDPage page : spotColorFile.getPages()) {
for (COSName name : page.getResources().getColorSpaceNames()) {
PDColor color = page.getResources().getColorSpace(name)
.getInitialColor();
PDSeparation cs = (PDSeparation) color.getColorSpace();
colors.put(cs.getColorantName(), color);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (spotColorFile != null)
try {
spotColorFile.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
spotColorFile = null;
}
}
return colors;
}
2. use your PDColor
public static void main(String[] args) {
PDDocument doc = null;
PDPage page = null;
try {
Map<String, PDColor> colors = getSpotColor();
doc = new PDDocument();
page = new PDPage(new PDRectangle(100, 100));
doc.addPage(page);
PDPageContentStream content = new PDPageContentStream(doc, page);
content.beginText();
content.setNonStrokingColor(colors.get("PANTONE 2607 C"));
content.setFont(PDType1Font.HELVETICA_BOLD, 20);
content.showText("abcdef");
content.endText();
content.setNonStrokingColor(colors.get("PANTONE 108 U"));
content.addRect(50, 50, 50, 50);
content.fill();
content.close();
doc.save("d:\\spotColorTest.pdf");
} catch (Exception e) {
System.out.println(e);
} finally {
if (doc != null)
try {
doc.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
doc = null;
}
}
}
3,如果你有一些想法更聰明,請讓我知道 :)
分離和DeviceN不一樣。 –